总结一下php中数组定义的方式,以及输出遍历的方式,多维数组定义和遍历等。详细解释都在代码里备注。
<?php
//声明数组
//直接为数组元素赋值
$a[1]=8;
$a[2]=9;
print_r($a);
echo "<br/>";
//应用array函数声明数组
$b=array(12,12,"a2","21");//当不说明键名的时候,默认下标从零开始,生成索引数组
print_r($b);
echo"<br/>";
$c=array("1"=>"22","3"=>"35","as"=>"34","t3"=>"wekc");//键名中只要有一个不是数字就认为是关联数组
print_r($c);
echo"<br/>";
//多维数组的声明
$d=array(
"a1"=>array("11","12",13,14),
"a2"=>array(12,32,3,431,1),
array(12,12,1,1,)
);
echo "<pre>";
print_r($d);
echo "</pre>";
//数组的遍历
//①for循环要求数组最好为下标是数字的数字索引数组
//count()函数求出数组的长度
for($e=1;$e<=count($a);$e++)
{
echo $a[$e];
}
echo "<br/>";
//②foreach遍历数组,遍历过程和数组的下标无关
//两种foreach遍历的形式
foreach( $b as $x)//只获取数组的值
{
echo $x." ";
}
echo "<br/>";
foreach($c as $k=>$v)//将数组的键名和值都获取
{
echo $k."=>".$v."<br/>";
}
//二维数组遍历
$arr3=array(
"1"=>$as1=array("11",12,13,14),
"2"=>$as2=array("22","23",24,25),
"3"=>$as3=array("33",'34',35,36)
);
echo "<pre>";
print_r($arr3);
echo "</pre>";
//用表格将二位数组值打印出来
echo "<table border='1' width='500px'>";
foreach($arr3 as $row)
{
echo "<tr>";
foreach($row as $v)
{
echo "<td>";
echo $v;
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
//③联合list()。each()。while()循环,来遍历数组
echo"<hr/>";
//list函数:把数组中的值赋给一些变量。 像 array()一样,这不是真正的函数,而是语言结构。 list()用一步操作给一组变量进行赋值。
$info = array( 'coffee' , 'brown' , 'caffeine' );
// 列出所有变量
list( $drink , $color , $power ) = $info ;
echo " $drink is $color and $power makes it special.\n" ;
echo"<br/>";
// 列出他们的其中一个
list( $drink , , $power ) = $info ;
echo " $drink has $power .\n" ;
echo"<br/>";
// 或者让我们跳到仅第三个
list( , , $power ) = $info ;
echo "I need $power !\n" ;
echo"<br/>";
// list() 不能对字符串起作用,所以对键名为字符串的数组也不起作用
/* $info2 = array( 'coffee'=>'brown1','coffee2'=>'brown2', );
list( ,$power1 ) = $info2 ;
echo "I need $power1 !\n" ; *///这样写会报错
echo"<br/>";
list( $bar ) = "abcde" ;
var_dump ( $bar ); // NULL
echo"<br/>";
echo"<hr/>";
//each() — 返回数组中当前的键/值对并将数组指针向前移动一步
//在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。如果要再用 each 遍历数组,必须使用 reset()
$foo1 = array( "bob" , "fred" );
$bar = each ( $foo1 );
print_r ( $bar );
$bar = each ( $foo1 );
print_r ( $bar );
$bar = each ( $foo1 );//因为没有值了,所以第三次不输出了
print_r ( $bar );
echo"<br/>";
$foo2 = array( "Robert" => "Bob" , "Seppo" => "Sepi" );
$bar = each ( $foo2 );
print_r ( $bar );
echo"<br/>";
//each() 经常和 list() 结合使用来遍历数组
//reset() 将 array 的内部指针倒回到第一个单元并返回第一个数组单元的值
$fruit = array( 'a' => 'apple' , 'b' => 'banana' , 'c' => 'cranberry' );
reset ( $fruit );
/* while (list( $key , $val ) = each ( $fruit )) //each拿到数组的值,list(因为对字符下标不起作用)给两个数字下标的值进行了赋值给key和value的操作
{
echo " $key => $val <br/>" ;
}//但是这样的写法,虽然正常显示结果 ,但是有警告(可能就是list函数引起)。 */
//while和each结合遍历数组
/* echo"<hr/>";
$a=array('aa'=>12,'bb'=>23,'cc'=>'23');
while ($e=each($a))
{
echo $e['key'].":".$e['value'];//也会报错。不知道为什么。
} */
?>