我正在尝试搜索多维数组以返回深度/值以及它是否存在,但我遇到了一些麻烦..
我的数组有多个深度/维度..我在其他人中存储当前的多维数组。这是一个例子:
array(
"UserInformation" => array(
array (
"Username" => "Test_User",
"Warnings" => 0,
"Post_ID" => array (7726,2254)
),
array (
"Username" => "Another",
"Warnings" => 2,
"WarningID" => array(8874,1125),
"Post_ID" => array (7726,2254)
),
),
"Mani" => 0,
"Aut" => 1,
"Wn" => 0,
"RTV"=> array(
"RunTime"=> "kk",
"Run_2" => "e",
"Perm"=>"p",
"DEp"=>"d")
);
现在,如何在没有嵌套for
或foreach
循环的情况下搜索整个数组索引?
我已尝试执行array_search
,但这不返回aval,因为它只搜索第一维,而不是更深入?
答案 0 :(得分:2)
你应该试试这个。
function recursive_array_search($needle,$haystack) {
foreach($haystack as $key=>$value) {
$current_key=$key;
if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value))) {
return $current_key;
}
}
return false;
}
此处用于检查针值是否与您正在搜索的值相同。如果为真,它将直接返回密钥,如果不是真的,它将首先检查该值是否为数组,然后通过使用新的嵌套数组更改其输入来递归调用相同的函数。因此,像这样,它将迭代迭代数组的结束级别以查找值。
答案 1 :(得分:0)
Amar修改后的代码对我有用:
/*
* recusrive array search
* @param array $array
* @param string $needle
* @return string|int:
*/
public function recursiveFind(array $array, $needle)
{
$iterator = new RecursiveIteratorIterator(
new RecursiveArrayIterator($array),
RecursiveIteratorIterator::SELF_FIRST
);
foreach ($iterator as $key => $item) {
$current_key = $key;
if (is_array($item) && $key === $needle) {
return $current_key;
}
}
}
在这个代码的情况下,我需要ID(int)或继续查看数组(字符串),直到我到达