牛骨文教育服务平台(让学习变的简单)

走进数组及相关数组函数

PHP数组:

数组时一组关键字和值得集合,值可以是任何一种类型;看下面简单的入门案例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> 数组入门 </title>
  <meta http-equiv="content-type"  content="text/html;charset=utf-8">
 </head>
 <body>
 <?php
    $hens[0]=3;
    $hens[1]=5;
    $hens[2]=2.5;
    $hens[3]=4;
    $hens[4]=3.5;
    $hens[5]=17;

	//为了计算数组元素的个数,使用系统函数count;
    echo "最共有".count($hens)." 只鸡<br/>";
	$allwight=0;
	for($i=0;$i<count($hens);$i++){
        echo "第".$i."只鸡重量".$hens[$i]."<br/>";
	    $allwight+=$hens[$i];
	}

	echo "最重量为:".$allwight.";平均重量为:".$allwight/count($hens);
 ?>
  
 </body>
</html>
最共有6 只鸡
第0只鸡重量3
第1只鸡重量5
第2只鸡重量2.5
第3只鸡重量4
第4只鸡重量3.5
第5只鸡重量17
最重量为:35;平均重量为:5.8333333333333
  • 创建数组

创建数组的方式很多,上面例子是最普通的一种方式。

在PHP数组中,每一个元素的值可以是任意的类型!

第二种方式:


$arr= array(1,90,"hello",null);

第三种方式创建数组


$arr["logo"] ="beijing";$arr["hsp"]=124;$arr[4]=678;

等同于下面的: 


$arr=array("logo"=>"beijing","hsp"=>123,4=>678); 

遍历方式:

foreach($arr as $key=>$val){

echo $key."=".$var."<br/>";

}

第三种方式 指定数组不能用for循环访问,应该用上面的方式遍历。

  //数组注意事项:
  //我们在创建数组的时候,如果没有给某个元素制定下标,PHP会自动的用目前最大的那个下标值(整数),加上1作为该元素的下标。
  $arr=array(5=>"logo",55,56);
  $arr=array(5=>"logo",6=>55,7=>56);

  • 数组的一些应用
  <?php
// 创建一个简单的数组
    $array = array(1, 2, 3, 4, 5);
    print_r($array);
    echo "<br/>";

// 现在删除其中的所有单元,但保持数组本身的结构
    foreach ($array as $i => $value) {
        unset($array[$i]);
   }
   print_r($array);
   echo "<br/>";

  // 添加一个单元(注意新的键名是 5,而不是你可能以为的 0)
  $array[] = 6;
  print_r($array);
  echo "<br/>";

// 重新索引:
$array = array_values($array);
$array[] = 7;
print_r($array);
echo "<br/>";
var_dump($array);
?>  
执行结果:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) 
Array ( ) 
Array ( [5] => 6 ) 
Array ( [0] => 6 [1] => 7 ) 
array(2) { [0]=> int(6) [1]=> int(7) }
  • PHP相关的常用函数

1、count 

统计数组元素的个数,使用:count($arr);

2、is-array

判断是否为数组,is_array($arr);

3、print_r 和var_dump(可显示数组元素类型)

显示数组信息

4、explode(在实际开发中,用途比较大)

拆分字符串函数。explode(“按照什么拆分”,字符串)

5、foreach 

数组遍历函数:

 foreach($arr as $key=>$val){

     echo $key."=".$var."<br/>";

}

6、unset 

unset()删除数组中的某个元素,但是不会重组索引。前面的例子已经说明!

7、array_values 

重新索引,一般和上面的函数配合使用!具体看什么的例子

  • 数组比较 
<?php
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");

$c = $a + $b; // Union of $a and $b
echo "Union of $a and $b: 
";
var_dump($c);

$c = $b + $a; // Union of $b and $a
echo "Union of $b and $a: 
";
var_dump($c);
?> 
Union of $a and $b:
array(3) {
  ["a"]=>
  string(5) "apple"
  ["b"]=>
  string(6) "banana"
  ["c"]=>
  string(6) "cherry"
}
Union of $b and $a:
array(3) {
  ["a"]=>
  string(4) "pear"
  ["b"]=>
  string(10) "strawberry"
  ["c"]=>
  string(6) "cherry"
} 
比较数组

<?php
$a = array("apple", "banana");
$b = array(1 => "banana", "0" => "apple");

var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
?>  

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> 综合案例 </title>
  <meta http-equiv="content-type"  content="text/html;charset=utf-8">
 </head>

 <body>

  <?php
  //error_reporting(E_ALL^E_NOTICE);
     $aar=$_REQUEST["grade"];
     $arr=explode(",",$aar);
	 $allval=0;
	 foreach($arr as $val){
		 $allval+=$val;
	 }
 ?>
 <h1>请输入学员的成绩,用逗号隔开</h1>
 <form action="array03.php" method="post">
   <input type="text" name="grade" value="<?php echo $aar ?>"/>
   <input type="submit" value="计算平均值"/>
 </form>

 <?php
     $aar=$_REQUEST["grade"];
     $arr=explode(",",$aar);
	 $allval=0;
	 foreach($arr as $val){
		 $allval+=$val;
	 }
 ?>
 <?php
	 echo "平均值:".round($allval/count($arr),2);
 ?>
  
 </body>
</html>


二维数组:

在内存中分布情况举例:

<?php
   //二维数组
   /* 0 0 0
      1 2 3
	  4 5 6
	*/
   $arr = array(array(0,0,0),array(1,2,3),array(4,5,6));

   for($i=0;$i<count($arr);$i++){
        for($j=0;$j<count($arr[$i]);$j++){
			echo $arr[$i][$j]." ";
		}
		echo "<br/>";
   }

?>