兩個foreach怎麼執行?
幫我看這個代碼是怎麼執行的,結果是這樣.
$ar=array(
array('id'=>4,'pid'=>1),
array('id'=>5,'pid'=>1),
array('id'=>6,'pid'=>1),
array('id'=>7,'pid'=>3),
array('id'=>8,'pid'=>4),
array('id'=>9,'pid'=>4),
array('id'=>10,'pid'=>5),
array('id'=>11,'pid'=>6),
array('id'=>12,'pid'=>6),
array('id'=>13,'pid'=>6),
array('id'=>14,'pid'=>8),
array('id'=>20,'pid'=>14),
array('id'=>30,'pid'=>20),
);
$aiya=array();
foreach($ar as $k=>$v){
if($v['pid']==1){
echo "1下面:".$v['id']."
";
$aiya[]=$v['id'];
}
foreach($aiya as $k1=>$v1){
if($v['pid']==$v1){
$aiya[]=$v['id'];
}
}
}
echo "
";
var_dump($aiya);
?>
你們猜猜這段代碼執行結果是什麼,為什麼
------解決方案--------------------
為什麼要猜,跑一下.
------解決方案--------------------
LZ表示沒看懂伱那個結果是幹嗎的!! 但
如果伱要是想遍曆數組$ar,下面代碼可以做到:
PHP code
foreach($ar as $arr){ foreach($arr as $key=>$val){ echo $key."=>".$val." "; } echo "
";}
------解決方案--------------------
表示沒有懂lz想要幹什麼 !
------解決方案--------------------
不知道你什麼意思? 這個代碼有何用?
遍曆迴圈,然後填充數組再對比?
------解決方案--------------------
為什麼……你第二個數組是在第一次遍曆的基礎上兩次變動的,當然有為什麼了……
------解決方案--------------------
是不好理解,你還是使用for ()語句
------解決方案--------------------
函數的意思就是先將$ar [pid=1]的值儲存到數組$aiya中,然後每取出依次PID值都要和數組$aiya的沒一個元素進行比較,如果有與PID值相同的元素,那麼就將數組$AR的ID值儲存到$aiya中,應用到實際上就是輸出數組$ar的欄位值到數組中,但完全沒這樣操作的必要吧.樓主可以加跟蹤代碼到程式中,然後看看效果,只有PID =3的那個ID值沒有儲存到數組$aiya中.
PHP code
4,'pid'=>1),array('id'=>5,'pid'=>1),array('id'=>6,'pid'=>1),array('id'=>7,'pid'=>3),array('id'=>8,'pid'=>4),array('id'=>9,'pid'=>4),array('id'=>10,'pid'=>5),array('id'=>11,'pid'=>6),array('id'=>12,'pid'=>6),array('id'=>13,'pid'=>6),array('id'=>14,'pid'=>8),array('id'=>20,'pid'=>14),array('id'=>30,'pid'=>20),);$aiya=array(); foreach($ar as $k=>$v){if($v['pid']==1){echo "1下面:".$v['id']."
";$aiya[]=$v['id'];}echo "測試一次數組遍力 的結果
" ;//增加的檢測代碼跟蹤輸出資料.print_r($aiya);//增加的檢測代碼跟蹤輸出資料.echo '
';//增加的檢測代碼跟蹤輸出資料.foreach($aiya as $k1=>$v1){if($v['pid']==$v1){$aiya[]=$v['id']; }}}echo "
";var_dump($aiya);?>
------解決方案--------------------
基本功啊基本功!
------解決方案--------------------
把程式改成如下就能完全看到效果了
PHP code
4,'pid'=>1),array('id'=>5,'pid'=>1),array('id'=>6,'pid'=>1),array('id'=>7,'pid'=>3),array('id'=>8,'pid'=>4),array('id'=>9,'pid'=>4),array('id'=>10,'pid'=>5),array('id'=>11,'pid'=>6),array('id'=>12,'pid'=>6),array('id'=>13,'pid'=>6),array('id'=>14,'pid'=>8),array('id'=>20,'pid'=>14),array('id'=>30,'pid'=>20),);$aiya=array(); foreach($ar as $k=>$v){if($v['pid']==1){echo "1下面將儲存資料:".$v['id']."
";$aiya[]=$v['id'];}foreach($aiya as $k1=>$v1){if($v['pid']==$v1){$aiya[]=$v['id']; echo "1下面將儲存資料:".$v['id']."
";}}echo "測試第一次遍力 的結果
" ;print_r($aiya);echo '
';}echo "你的最終$aiya 的資料結構為:
";var_dump($aiya);?>