PHP之旅3 php数组以及遍历数组 以及each() list() foreach()

时间:2022-10-21 17:42:17

php的数组的定义

<?php
//php中定义数组时可以通过索引直接进行赋值:
$mArr[0]="哈哈";
$mArr[1]=70;
$mArr[2]='haha';
echo "下面输出的是mArr:<br/>";
var_dump($mArr);
echo "<br/>";

//也可以直接赋值,php会从0自动编码
$kArr[]="哈哈";
$kArr[]=70;
$kArr[]='haha';
echo "下面输出的是kArr:<br/>";
var_dump($kArr);
echo "<br/>";
//还可以这样写
$rArr[5]="哈哈";
$rArr[]=70;
$rArr[]='haha';
echo "下面输出的是rArr:<br/>";
var_dump($rArr);
echo "<br/>";
?>

结果:

PHP之旅3 php数组以及遍历数组 以及each() list() foreach()

但如果定义了两个相同的索引,那前面那个值将会被覆盖掉。可以自己尝试一下。

 数组的遍历:

foreach();

php的数组遍历可以通过for和while循环进行遍历,还可以有foreach进行,表达式有两种,分别是:

foreach(数组名  as  元素名){

    语句块;

}

或者:

foreach(数组名 as 键名 => 元素名){

     语句块;

}

两个有些不同,可以通过下面的例子看出:如果数组是键值对的话只能将数组中的键值对的值获取到,第二种方法是可以将key也获取到。

eg:

<?php

$name = array('张三' => '姓张','李四'=>'姓李','王二'=>'姓王','赵一'=>'姓赵');

foreach ($name as $value) {
    echo "第一次的结果::".$value."<br/>";
}


foreach ($name as $key => $value) {
    echo "第二次的结果::"."key的值是:"."$key".",并且value的值为:"."$value<br/>";
}
?>

结果是:

PHP之旅3 php数组以及遍历数组 以及each() list() foreach()

list()进行遍历数组

list()并不是真正的函数,和array[]一样,是一种语言结构,list()只能用于下标从0开始的索引数组。

void list(mixed $var , mixed $...)

 

eg:

<?php
$mArr=["张三",20,'男','1998年出生'];

list($name,$age,$sex) = $mArr;

echo $name.' '.$age.' '.$sex;
?>

结果:

PHP之旅3 php数组以及遍历数组 以及each() list() foreach()

可以看出list()是直接取得mArr的从下边为了、0开始的前三个值

each()遍历数组

 each()用于返回数组中当前的键值对,并将数组指针向前移动一步。语法格式:

array each(array $var);

eg:

<?php
$mArr=["张三",20,'男','1998年出生'];

$arr = each($mArr);
echo "<br/>";
var_dump($arr);


$arr = each($mArr);
echo "<br/>";
var_dump($arr);


$arr = each($mArr);
echo "<br/>";
var_dump($arr);


$arr = each($mArr);
echo "<br/>";
var_dump($arr);
?>

结果为:

PHP之旅3 php数组以及遍历数组 以及each() list() foreach()

返回4个单元的数组,键名为0、1、key、value。单元0和key包含数组的键名,1和value办函数组元素的值如果指针越界,则each()返回FALSE。

混合使用list()与each()遍历数组:

eg:

<?php
$mArr=["张三",20,'男','1998年出生'];

while (list($key,$value) = each($mArr)) {
    echo  $key."=>".$value;
    echo "<br/>";
}
?>

结果如下:

PHP之旅3 php数组以及遍历数组 以及each() list() foreach()

二维数组就以及遍历就是按照上面的方法进行嵌套。