Я работаю над многомерными массивами и нахожу случаи, подобные этому вопросу . После того, как я попытался, выяснилось, что мне нужно было искать идентификатор и уникальное значение, поэтому оно отличалось от моего случая.
, поэтому мой случай выглядит так: у меня есть многомерный массив, подобный этому:
Array
(
[0] => Array
(
[item] => null
[count] => 0
[child] => Array
(
[Dagadu Bocah] => Array
(
[item] => Dagadu Bocah
[count] => 47
[child] => Array
(
[HirukPikuk] => Array
(
[item] => HirukPikuk
[count] => 5
[child] => Array
(
[DGD] => Array
(
[item] => DGD
[count] => 1
[child] =>
)
)
)
[DGD] => Array
(
[item] => DGD
[count] => 5
[child] => Array
(
[Malioboroman] => Array
(
[item] => Malioboroman
[count] => 1
[child] =>
)
)
)
[Malioboroman] => Array
(
[item] => Malioboroman
[count] => 2
[child] =>
)
)
)
я ищу, как искать массивы, например, «DGD» будет производить все индексы, заканчивающиеся массивом «DGD»
DGD => Dagadu Bocah->HirukPikuk,
Dagadu Bocah;
Malioboroman=> Dagadu Bocah->DGD,
Dagadu Bocah;
, что я пробовал это, с конечным результатом, используя implode:
public function searchRec($haystack, $needle, $pathId=Array(), $pathIndex=Array())
{
foreach($haystack as $index => $item) {
$pathId[] = $item['count'];
$pathIndex[] = $index;
if($item['item'] == $needle) {
$returnObject = new stdClass();
$returnObject->match = $item;
$returnObject->pathId = $pathId;
$returnObject->pathIndex = $pathIndex;
return $returnObject;
}
if(isset($item['child']) && count($item['child']>0)) {
$result =searchRec($item['child'], $needle, $pathId, $pathIndex);
if($result) {
return $result;
}
}
}
return false;
}
$result = searchRec($Array, "Some Text2");
echo implode(" -> ", $result->pathId);