foreach學習遇到的問題(細說php 兄弟連)
書中代碼如下
PHP code
"高某","A公司","北京市",14=>"(010)98765432","[email protected]"); $num=0; foreach($contact as $value) { echo"在數組\$contact中第".$num."個元素是:$value
"; $num++; }?>
輸出結果如下:
在數組$contact中第0個元素是:1
在數組$contact中第1個元素是:(010)98765432
在數組$contact中第2個元素是:A公司
在數組$contact中第3個元素是:北京市
在數組$contact中第4個元素是:[email protected]
小弟對於數組array存在困惑 其鍵與值的問題
第0個元素是1 這個我明白 那麼第1個元素為什麼會跳到電話號碼呢?
14=>"高某"怎麼算。。 然後是公司 北京市 郵箱 為什麼會跳躍 不懂 求指點
ps : 此書輸出語句居然是【在數組\$contact中第$num個元素是:$value
】 你沒的 串連符都沒有。
------解決方案--------------------
數組運行機制.
從左至右 按 索引值產生 內容.無索引值情況 則 按 數字順序產生 索引值。
以上
左到右的情況中 索引值 為 14 的有2個
數組現排序 按插入情況排列
[0] = 1 (1)
[14] = 高某 (2) <- (010)98765432 (4) 覆蓋 但 數組插入排序是 排 第2 的 所以現在 依然排於 2
[15] = A公司 (3)
------解決方案--------------------
暈,你重複定義了
array(
14=>"高某",
14=>"(010)98765432"
);
自然就被(010)98765432,覆蓋了
但是按照數組的排列14=>"高某",原來排在第二個,
所以14=>"(010)98765432"排在第二個
------解決方案--------------------
PHP code
$contact = array( 1, 14 => "高某", "A公司", "北京市", 14 => "(010)98765432", "[email protected]");// 格式化列印出來,如下:echo '';print_r($contact);/*Array( [0] => 1 [14] => (010)98765432 [15] => A公司 [16] => 北京市 [17] => [email protected])*/// 由此可以看出後面的“(010)98765432”將前面的“高某”覆蓋了,這是為什麼呢?因為php中同維度數組中不允許存在相同的鍵,你可以將鍵看成人的社會安全號碼碼,值看成是人的名字,名字有相同而社會安全號碼不會有相同。之後數組變成如下:$contact=array(1,14=>"(010)98765432","A公司","北京市","[email protected]");//這個時候因為"A公司","北京市","[email protected]"這三個在鍵14的後面,那麼它們的鍵不會再從1開始了,而是接著14開始,也就是15//咱們再看個例子(將"A公司"移動到1的後面):$contact=array(1,"A公司",14=>"(010)98765432","北京市","[email protected]");echo '';print_r($contact);//結果輸出如下:/*Array( [0] => 1 [1] => A公司 [14] => (010)98765432 [15] => 北京市 [16] => [email protected])*/