打探PHP中之Array数组和foreach

1. 理解数组

        PHP 中之数组实际上是一个静止映射。映射是同样栽把 values 关联到
keys
的门类。详细的说可参见:PHP.net中的Array数组   

2.例子:一般的数组

       这里,我透过一个简练的事例,并利用图形情势来打探数组。

//1.-----------------------------------

$a = array(3 => 'a', 1 => 'b', 2 => 'c');

echo var_dump($a);

 
 ca88官网 1
     
ca88官网 2    

 [注]ca88官网,:使用箭头描述数组$a各样单元对应某同内存地址的数据值(实际上,它内部结构采纳HashTable结构,可以参考鸟哥写的PHP中的Hash算法)。

 

3.事例:在屡组定义着,添加引用。

//2.-----------------------------------

$x = 'x';
$a = array(3 => 'a', 1 => &$x, 2 => 'c');

echo "<hr>";
echo var_dump($a);

$x = 'y';
echo var_dump($a);

 
ca88官网 3
ca88官网 4

数组$a中的第2个单元$a[1]暨$x对应之是同一个多少,使用var_dump($a)的当儿,会视数组的第2个单元四个&符号,即&string(1)
“x”,表示援引。

当 修改$x的值=’y’,也一如既往于修改$a[1]的值=’y’。

生图可以了解的叙说这无异于弯:

              
ca88官网 5

 4.例证:使用foreach遍历数组。

//3.-----------------------------------

$a = array(3 => 'a', 1 => 'b', 2 => 'c');

echo "<hr>";
foreach ($a as $key => $value) {
    echo "$key => $value <br>";

}

ca88官网 6

老是循环中,当前数组中单元的价值为授予给 $value ,单元的key被予以给$key。如下图描述:

ca88官网 7

【注:】粉红色虚箭头表示与某平等值。

 

 5.例子:在foreach遍历数组中,使用引用赋值。

//4.-----------------------------------

$a = array(3 => 'a', 1 => 'b', 2 => 'c');

echo "<hr>";
foreach ($a as $key => &$value) {
    $value.='n';
    echo "$key => $value <br>";

}

ca88官网 8

每一回循环中, $value
都指向当前数组中单元的值,再履行“ $value.=’n’;
”代码 ,如下图描述:

 ca88官网 9

 

6.例证:对例子5的更加分析。

   
在例子5,foreach遍历数组完成后,不相会自动销毁$value变量,与数组$a最后一个单元$a[2]本着同一个数额。

这儿改变$value的价,也便是移了$a[2]的值。

//5.-----------------------------------

$value='m';

echo "<hr>";
echo "\$value=$value <br>";
echo var_dump($a);

ca88官网 10

 

ca88官网 11

实例证实, 数组最终一个元素的 $value 引用在 foreach
循环之后按会保留。指出以 unset() 来用这销毁。

 

 7.小结

如上例子,只是叙php中的array数组和foreach的有表征。学习最终,感觉php中的array数组和foreach不同于此外编程语言,不克动用类C语言的结构分析PHP。

 

(完.)

相关文章