兩個foreach如何執行

來源:互聯網
上載者:User
兩個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);?>
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.