foreach学习遇到的问题(细说php 兄弟连)
书中代码如下
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> <?php $contact=array(1,14=>"高某","A公司","北京市",14=>"(010)98765432","gao@php.com"); $num=0; foreach($contact as $value) { echo"在数组\$contact中第".$num."个元素是:$value<br>"; $num++; } ?>
$contact = array( 1, 14 => "高某", "A公司", "北京市", 14 => "(010)98765432", "gao@php.com"); // 格式化打印出来,如下: echo '<pre class="brush:php;toolbar:false">';print_r($contact); /* Array ( [0] => 1 [14] => (010)98765432 [15] => A公司 [16] => 北京市 [17] => gao@php.com ) */ // 由此可以看出后面的“(010)98765432”将前面的“高某”覆盖了,这是为什么呢?因为php中同维度数组中不允许存在相同的键,你可以将键看成人的身份证号码,值看成是人的名字,名字有相同而身份证号不会有相同。之后数组变成如下: $contact=array(1,14=>"(010)98765432","A公司","北京市","gao@php.com"); //这个时候因为"A公司","北京市","gao@php.com"这三个在键14的后面,那么它们的键不会再从1开始了,而是接着14开始,也就是15 //咱们再看个例子(将"A公司"移动到1的后面): $contact=array(1,"A公司",14=>"(010)98765432","北京市","gao@php.com"); echo '<pre class="brush:php;toolbar:false">';print_r($contact); //结果输出如下: /* Array ( [0] => 1 [1] => A公司 [14] => (010)98765432 [15] => 北京市 [16] => gao@php.com ) */ <div class="clear"> </div>