Допустим есть вот такой массив
[ 1, 2, [ 1, 2, [ 1, 2, 3 ], 4, 5 ], 4, 5 ]
Мне нужно получит первый попавшийся (любой) ключ у которого значение например равно 3 (трем).
$arr = [ 1, 2, [ 1, 2, [ 1, 2, 3 ], 4, 5 ], 4, 5 ];
function recu($arr, $oldKey = "") {
foreach ($arr as $key => $value) {
if ($value == 3)
echo "finded in position ".$oldKey."_".$key."_";
if (is_array($value))
return recu($value, "".$oldKey."_".$key."_");
}
}
recu($arr);
Если нужно получить именно массив соответствующей структуры:
$arr = [ 1, 2, [ 1, 2, [ 1, 2, 3 ], 4, 5 ], 4, 5 ];
print_r( foo($arr, 3) );
function foo(Array $arr, $need) {
static $triger = true;
$result = [];
foreach ($arr as $key => $val) {
if ( is_array($val) && !empty($tmp = foo($val, $need)) ) {
$result[$key] = $tmp;
}
if ($val == $need & $triger) {
$result[$key] = $val;
$triger = false;
}
}
return $result;
}
Результат:
Array
(
[2] => Array
(
[2] => Array
(
[2] => 3
)
)
)
Сборка персонального компьютера от Artline: умный выбор для современных пользователей