$arrResult=array(
0=>array('categoryid'=>112,'catname'=>'apperal','subcategory'=>array(
412=>array('categoryid'=>428,'catname'=>'rainwear','subcategory'=>array(
428=>array('categoryid'=>413,'catname'=>'summer','subcategory'=>array()))))));
print_r($arrResult);
$iterator = new RecursiveArrayIterator($arrResult);
iterator_apply($iterator, 'traverseStructure', array($iterator));
function traverseStructure($iterator) {
$arrAddResult=array('categoryid'=>416,'catname'=>'winter','subcategory'=>array());
while ($iterator -> valid()) {
if ($iterator -> hasChildren()) {
traverseStructure($iterator -> getChildren());
}
else {
if($iterator -> current() == 413)
{
$arr=&$iterator;
$a='arr';
${$a}['subcategory']=$arrAddResult;
break;
}
}
$iterator -> next();
}
}
預期的輸出是在$ arrResult中追加'arrAddResult'appenedn。但由於某種原因,迭代器得到修改,但它並不反映arrResult數組中的修改。添加/修改php n級關聯陣列
我試着在函數'traverseStructure'中通過ref傳遞數組,但仍然在努力獲得正確的輸出。
我想先迭代器。我必須構造一個N層關聯數組作爲arrResult,因此可以選擇使用迭代器。
我不認爲迭代器在這裏最好用,如果我理解該代碼的邏輯。這是您使用它的實際場景嗎? – Khez 2011-04-15 04:03:34
問題:我必須構造關聯數組的N-嵌套級別。 '$ arrResult'數組是嵌套的關聯數組。我想添加$ arrAddResult作爲$ arrResult的一部分。 $ arrAddResult的父類是類別ID 413. 我認爲Iterator會幫助我遞歸地走數組,當我找到匹配鍵時,我會將$ arrAddResult追加到$ arrResult。 如果還有其他的方法來執行這個請分享 – user269867 2011-04-15 06:20:15
如果你所有的迭代器都是找到結尾數組,那麼找到最後一個孩子的函數是不是更適合?你打算如何使用它?我強烈地感到在這種情況下不使用迭代器。 – Khez 2011-04-15 06:42:22