以下函数很好地告诉我是否在数组中找到了值..
function array_search_recursive($needle, $haystack) {
foreach ($haystack as $value) {
if (is_array($value) && array_search_recursive($needle, $value)) return true;
else if ($value == $needle) return true;
}
return false;
}
但是我想要数组中的值退出的数组索引号。
答案 0 :(得分:0)
我已经通过添加引用传递的第三个参数来修改你的函数。
如果找到针,该函数将返回true。此外,$ indexes是找到的值的索引数组。
function array_search_recursive($needle, $haystack, &$indexes=array())
{
foreach ($haystack as $key => $value) {
if (is_array($value)) {
$indexes[] = $key;
$status = array_search_recursive($needle, $value, $indexes);
if ($status) {
return true;
} else {
$indexes = array();
}
} else if ($value == $needle) {
$indexes[] = $key;
return true;
}
}
return false;
}
示例:
$haystack1 = array(
0 => 'Sample 1',
1 => 'Sample 2',
2 => array(
'Key' => 'Sample 3',
1 => array(
0 => 'Sample 4',
1 => 'Sample 5'
)
),
4 => 'Sample 6',
3 => array(
0 => 'Sample 7'
),
);
“样本5”的索引是[2] [1] [1]。
if (array_search_recursive('Sample 5', $haystack1, $indexes)) {
/**
* Output
* Array
* (
* [0] => 2
* [1] => 1
* [2] => 1
* )
*/
echo '<pre>';
print_r ($indexes);
echo '</pre>';
die;
}