最新消息: 新版网站上线了!!!

PHP循环二维数组

PHP代码:

<?php
$arr1=array(100,200,300,400);
$arr2=array("num"=>100,"name"=>"Liuxy","score"=>98);
print_r($arr1);
echo "<br>";
print_r($arr2);
?>


以上代码的输出结果如下:
Array ( [0] => 100 [1] => 200 [2] => 300 [3] => 400 ) 
Array ( [num] => 100 [name] => Liuxy [score] => 98 )
若要定义二维数组,可以嵌套地使用array函数,同C类似,也是把二维数组的每一行看作是一个一维数组,构成每一行的一维数组可以互不相同。如: 
复制PHP内容到剪贴板 
PHP代码:
$arr=array( 
           "row1"=>array(100,200,300,400),
           "row2"=>array("num"=>100,"name"=>"Liuxy","score"=>98)
         );


PHP数组元素的访问同C类似,都是数组名[键名]的形式。
PHP数组的遍历可以通过foreach语句实现,foreach语句格式如下:
foreach (数组名 as  变量名) 数据元素处理语句;
翻译成C语言就是:
for (i=0;i<n; i++){变量名=a;其他包含“变量名”的处理语句}
foreach等价于前面的 for (i=0;i<n; i++)
as等价于“变量名”与a之间的等号,这下你明白了吧。
例如: 
复制PHP内容到剪贴板 
PHP代码:

<?php
$arr=array(1,2,3,4,5,6);
foreach ($arr as $value ) echo ”$value<br>”;
?>


输出结果是什么?想想看。
如果还想把对应的键名也同时输出出来,可以用这样的形式:
foreach ($arr as $key=>$value) echo “键名为$key的元素值为$value”;
在C中遍历二维数组我们一般用二重for循环,相应地,PHP中的foreach也可以嵌套使用,分析一下下面的程序你就明白了: 
复制PHP内容到剪贴板 
PHP代码:

<?php
$arr=array( 
             "row1"=>array(100,200,300,400),
             "row2"=>array("num"=>100,"name"=>"Liuxy","score"=>98)
           );

foreach ($arr as $key=>$value)
{
    echo "$key=>$value";
    echo "<br>";
    foreach ($value as $k=>$var) echo "$k=>$var<br>";
}
?>


PHP的数组元素是可以动态增长的,这是C里面不敢想的。为数组增加一个元素很简单,同访问数组元素一样,只不过键名是新的或者为空,如 $arr[new]=3; 或 $arr[]=3,这样做的结果是PHP为数组$arr增加一个键名为new的元素其值为3,若键名为空,则以当前整型键名的最大值加1作为默认的键名分配给新的元素。PHP的这种动态增长数组有时候很方便,但也带来隐患,比如当我们企图修改已存在的元素值而写错了键名时,就变成了新增一个元素,而这样的逻辑错误,系统是不会报错的。
可以增长就可以缩减,要想删除一个数组元素,可以使用unset函数,如删除上面新增的那个元素,可以写成 unset($arr[new])。也可以使用unset函数删除整个数组结构,如unset($arr),要注意这同逐个删除全部数组元素不同,后者还保留有数组的结构。形象地说,后者是人去楼空,但楼还在,前者连楼也拆除了。有意思的是删除数组全部元素后如果新增一个元素,它的默认键名将延续之前数组的最大键名递增,要想从0开始,可以使用array_values函数重置,如$arr=array_values($arr)。
提醒大家的是,PHP为数组的排序、查找、合并、拆分提供了大量函数,用到这些基本算法时,不用再去翻数据结构课本了,呵呵……

转载请注明:谷谷点程序 » PHP循环二维数组