for next array, keys of each sub-array indicates node-id (0) , category name (1) .
trying find parent node-id each sub-category.
example, parent id '3968976031' '10176091' , parent id '3968980031' '3968977031'.
in order define parent, have @ category :
parent of küche & haushalt/heimtextilien, bad- & bettwaren/babybettausstattung küche & haushalt/heimtextilien, bad- & bettwaren
form of appreciated.
array(6) { [0]=> array(2) { [0]=> string(8) "10176091" [1]=> string(48) "küche & haushalt/heimtextilien, bad- & bettwaren" } [1]=> array(2) { [0]=> string(10) "3968976031" [1]=> string(68) "küche & haushalt/heimtextilien, bad- & bettwaren/babybettausstattung" } [2]=> array(2) { [0]=> string(10) "3968977031" [1]=> string(88) "küche & haushalt/heimtextilien, bad- & bettwaren/babybettausstattung/babybettausstattung" } [3]=> array(2) { [0]=> string(10) "3968978031" [1]=> string(99) "küche & haushalt/heimtextilien, bad- & bettwaren/babybettausstattung/babybettausstattung/bettbezüge" } [4]=> array(2) { [0]=> string(10) "3968979031" [1]=> string(99) "küche & haushalt/heimtextilien, bad- & bettwaren/babybettausstattung/babybettausstattung/bettdecken" } [5]=> array(2) { [0]=> string(10) "3968980031" [1]=> string(104) "küche & haushalt/heimtextilien, bad- & bettwaren/babybettausstattung/babybettausstattung/bettwäsche-sets" } }
use foreach :
$seencategories = array(); foreach($myarray $key => $subarray) { $id = $subarray[0]; $category = $subarray[1]; // $category = küche & haushalt/heimtextilien, bad- & bettwaren/babybettausstattung/babybettausstattung/bettwäsche-sets // saving category in order found parent in future $seencategories[$category] = $id; // parsing category in order find parent $categorieslist = explode('/', $category); $nbsubcategories = count($categorieslist); // remove last subcategory (bettwäsche-sets) find parent unset($categorieslist[$nbsubcategories-1]); $parentcategory = implode("/", $categorieslist); // $parentcategory = küche & haushalt/heimtextilien, bad- & bettwaren/babybettausstattung/babybettausstattung // deleted loop due performence leak /*$parentid = null; for($testingkey = $key-1; $testingkey >= 0; $testingkey--) { if($parentcategory == $myarray[$testingkey][1]) { // found parent $parentid = $myarray[$testingkey][0]; // let's exit loop break; } }*/ // performence improvement // if we've seen parent, id (we suppose parent can't after children) if(array_key_exists($parentcategory, $seencategories) { $parentid = $seencategories[$parentcategory]; } else { $parentid = null; } echo "id of item : $id, category : $category, parentid : $parentid"; } edit :
improved performences according mr.dos's comment. thanks.
Comments
Post a Comment