1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | <?php $haystack = array( array("id" => 1,"parent" => 0,"route" => "home","children" => array()), array("id" => 2,"parent" => 0,"route" => "news","children" => array()), array("id" => 3,"parent" => 0,"route" => "photography","children" => array( array("id" => 6,"parent" => 3,"route" => "photography/portraits","children" => array()), array("id" => 7,"parent" => 3,"route" => "photography/countries","children" => array()), array("id" => 8,"parent" => 3,"route" => "photography/landscapes","children" => array( array("id" => 9,"parent" => 8,"route" => "photography/landscapes/city","children" => array()), array("id" => 10,"parent" => 8,"route" => "photography/landscapes/wilderness","children" => array()) ) ) ) ), array("id" => 4,"parent" => 0,"route" => "about","children" => array()), array("id" => 5,"parent" => 0,"route" => "contact","children" => array()), ); function recurse($needle = -1, $haystack = NULL){ static $_tmp = array(); if (count($_tmp) == 0 && $haystack != NULL && count($haystack) > 0) { foreach($haystack as $key => $item) { if (count($_tmp) == 0) { echo $needle ." === ". $item["id"] . "<br/>\n"; if((string)$item["id"] === (string)$needle){ echo "Found: " . $needle . "<br/>\n"; $_tmp = $item; //break; return $_tmp; } elseif (!empty($item["children"])) { echo "calling ". $item["id"]. ".children <br/>\n"; $_tmp = recurse($needle, $item["children"]); } } } } return $_tmp; } $test = recurse(9, $haystack); print_r($test); ?> |
PD9waHAKJGhheXN0YWNrID0gYXJyYXkoCiAgICBhcnJheSgiaWQiID0+IDEsInBhcmVudCIgPT4gMCwicm91dGUiID0+ICJob21lIiwiY2hpbGRyZW4iID0+IGFycmF5KCkpLAogICAgYXJyYXkoImlkIiA9PiAyLCJwYXJlbnQiID0+IDAsInJvdXRlIiA9PiAibmV3cyIsImNoaWxkcmVuIiA9PiBhcnJheSgpKSwKICAgIGFycmF5KCJpZCIgPT4gMywicGFyZW50IiA9PiAwLCJyb3V0ZSIgPT4gInBob3RvZ3JhcGh5IiwiY2hpbGRyZW4iID0+IGFycmF5KAogICAgICAgICAgICAgICAgYXJyYXkoImlkIiA9PiA2LCJwYXJlbnQiID0+IDMsInJvdXRlIiA9PiAicGhvdG9ncmFwaHkvcG9ydHJhaXRzIiwiY2hpbGRyZW4iID0+IGFycmF5KCkpLAogICAgICAgICAgICAgICAgYXJyYXkoImlkIiA9PiA3LCJwYXJlbnQiID0+IDMsInJvdXRlIiA9PiAicGhvdG9ncmFwaHkvY291bnRyaWVzIiwiY2hpbGRyZW4iID0+IGFycmF5KCkpLAogICAgICAgICAgICAgICAgYXJyYXkoImlkIiA9PiA4LCJwYXJlbnQiID0+IDMsInJvdXRlIiA9PiAicGhvdG9ncmFwaHkvbGFuZHNjYXBlcyIsImNoaWxkcmVuIiA9PiBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgiaWQiID0+IDksInBhcmVudCIgPT4gOCwicm91dGUiID0+ICJwaG90b2dyYXBoeS9sYW5kc2NhcGVzL2NpdHkiLCJjaGlsZHJlbiIgPT4gYXJyYXkoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoImlkIiA9PiAxMCwicGFyZW50IiA9PiA4LCJyb3V0ZSIgPT4gInBob3RvZ3JhcGh5L2xhbmRzY2FwZXMvd2lsZGVybmVzcyIsImNoaWxkcmVuIiA9PiBhcnJheSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgKQogICAgICAgICkKICAgICksCiAgICBhcnJheSgiaWQiID0+IDQsInBhcmVudCIgPT4gMCwicm91dGUiID0+ICJhYm91dCIsImNoaWxkcmVuIiA9PiBhcnJheSgpKSwKICAgIGFycmF5KCJpZCIgPT4gNSwicGFyZW50IiA9PiAwLCJyb3V0ZSIgPT4gImNvbnRhY3QiLCJjaGlsZHJlbiIgPT4gYXJyYXkoKSksCik7CgpmdW5jdGlvbiByZWN1cnNlKCRuZWVkbGUgPSAtMSwgJGhheXN0YWNrID0gTlVMTCl7CiAgICBzdGF0aWMgJF90bXAgPSBhcnJheSgpOwoKICAgIGlmIChjb3VudCgkX3RtcCkgPT0gMCAmJiAkaGF5c3RhY2sgIT0gTlVMTCAmJiBjb3VudCgkaGF5c3RhY2spID4gMCkgewogICAgICAgZm9yZWFjaCgkaGF5c3RhY2sgYXMgJGtleSA9PiAkaXRlbSkgewogICAgICAgICAgaWYgKGNvdW50KCRfdG1wKSA9PSAwKSB7CiAgICAgICAgICAgZWNobyAkbmVlZGxlIC4iID09PSAiLiAkaXRlbVsiaWQiXSAuICI8YnIvPlxuIjsKCiAgICAgICAgICAgaWYoKHN0cmluZykkaXRlbVsiaWQiXSA9PT0gKHN0cmluZykkbmVlZGxlKXsKICAgICAgICAgICAgICAgZWNobyAiRm91bmQ6ICIgLiAkbmVlZGxlIC4gIjxici8+XG4iOwogICAgICAgICAgICAgICAkX3RtcCA9ICRpdGVtOwogICAgICAgICAgICAgICAvL2JyZWFrOwogICAgICAgICAgICAgICByZXR1cm4gJF90bXA7CiAgICAgICAgICAgfSBlbHNlaWYgKCFlbXB0eSgkaXRlbVsiY2hpbGRyZW4iXSkpIHsKICAgICAgICAgICAgICAgZWNobyAiY2FsbGluZyAiLiAkaXRlbVsiaWQiXS4gIi5jaGlsZHJlbiA8YnIvPlxuIjsKICAgICAgICAgICAgICAgJF90bXAgPSByZWN1cnNlKCRuZWVkbGUsICRpdGVtWyJjaGlsZHJlbiJdKTsKICAgICAgICAgICB9CiAgICAgICAgICAgfQogICAgICAgfQogICAgfQogICAgcmV0dXJuICRfdG1wOwp9CgokdGVzdCA9IHJlY3Vyc2UoOSwgJGhheXN0YWNrKTsKcHJpbnRfcigkdGVzdCk7Cgo/Pg==
-
upload with new input
-
result: Success time: 0.02s memory: 13112 kB returned value: 0
9 === 1<br/> 9 === 2<br/> 9 === 3<br/> calling 3.children <br/> 9 === 6<br/> 9 === 7<br/> 9 === 8<br/> calling 8.children <br/> 9 === 9<br/> Found: 9<br/> Array ( [id] => 9 [parent] => 8 [route] => photography/landscapes/city [children] => Array ( ) )


