是否可以在数组中搜索给定值并返回找到该值的所有索引?因此,对于此数组:
["Red","Green","Red","Blue"]
我需要
[0,2]
关于搜索“红色”。在这种情况下,搜索“ Yellow”将返回一个空数组。
答案 0 :(得分:6)
您可以这样使用:
$array = ["Red","Green","Red","Blue"];
$output = array_keys($array, "Red");
$output
将是[0,2]
答案 1 :(得分:0)
我认为这应该可行:
$input = ["Red","Green","Red","Blue"];
$x = "Red";
$keys = array_keys(array_filter($input, function ($v) use ($x) { return $v === $x;}));
答案 2 :(得分:0)
$arr = ["Red","Green","Red","Blue"];
$valueToSearchFor = ["Red"];
$keys = array_keys(array_filter($arr, function ($val1) use ($valueToSearchFor) { // filter the first array
return array_filter($valueToSearchFor, function ($val) use ($val1) { // use the first array's value
return $val == $val1; // compare them and then return them
});
}));
var_dump($keys) // array(2) { [0]=> int(0) [1]=> int(2) }
首先我们对数组进行过滤,然后将值从第一个过滤器移至另一个过滤器,然后对数组进行匹配并返回它们。这也适用于多个值。
$arr = ["Red","Green","Red","Blue"];
$valueToSearchFor = ["Red", "Blue"];
$keys = array_keys(array_filter($arr, function ($val1) use ($valueToSearchFor) {
return array_filter($valueToSearchFor, function ($val) use ($val1) {
return $val == $val1;
});
}));
var_dump($keys) // array(3) { [0]=> int(0) [1]=> int(2) [2]=> int(3) }
答案 3 :(得分:0)
您可以使用foreach迭代数组:
foreach($input_arr as $key => $value){
if($value == 'Red'){
needed_key_arr[] = $key;
}
}
此外,如果您可以拥有一组值,则搜索内容将使用:
$lookup_arr = ['Red', 'Green'];
foreach($input_arr as $key => $value){
if(in_array($value, $lookup_arr)){
needed_key_arr[] = $key;
}
}