2013-04-16 51 views
0
<?php 
    $products = array(
     array("name"=>"apple", "count"=>1), 
     array("name"=>"google", "count"=>2), 
     array("name"=>"ms", "count"=>4) 
    ); 
    echo "one:<br/>"; 
    for ($i=0; $i < count($products); $i++) { 
     foreach ($products[$i] as $key => $value) { 
      echo $key."-".$value.","; 
     } 
     echo "<br/>"; 
    } 
    echo "<br/>two:<br/>"; 
    for ($j=0; $j < count($products); $j++) { 
     while(list($k, $v) = each($products[$j])){ 
      echo $k."|".$v.","; 
     } 
     echo "<br/>"; 
    } 
?> 

這個代碼只是輸出:爲什麼這個php代碼只輸出一部分?

one: 
name-apple,count-1, 
name-google,count-2, 
name-ms,count-4, 

two: 

我想知道爲什麼兩個部分不輸出?

回答

2

由於每個子數組的內部數組指針已經在數組的末尾,並且當您嘗試使用each()時,沒有任何內容可以返回。試試這個:

echo "<br/>two:<br/>"; 
for ($j=0; $j < count($products); $j++) { 
    reset($products[$j]); 
    while(list($k, $v) = each($products[$j])){ 
     echo $k."|".$v.","; 
    } 
    echo "<br/>"; 
} 

它所做的就是調用reset()來重置數組指針。

相關問題