我在这里遇到问题:
我有两个如下的数组:
$array1 = array('1','2','1','3','1');
$array2 = array('1','2','3'); // Unique $array1 values
使用array2值我需要array1的所有键
预期输出为:
1 => 0,2,4
2 => 1
3 => 3
此处显示array2 value
=> array1 keys
答案 0 :(得分:10)
只需使用循环:
$result = array();
foreach ($array1 as $index => $value) {
$result[$value][] = $index;
}
答案 1 :(得分:1)
如果您传递array_keys
第二个参数,它会为您提供具有该值的所有键。
因此,只需循环浏览$array2
并从$array1
获取密钥。
$result = array();
foreach($array2 as $val){
$result[$val] = array_keys($array1, $val);
}
答案 2 :(得分:1)
以下代码将完成这项工作。它将创建一个结果数组,其中属性val将包含在数组中搜索的值,keys属性将是包含找到的键的数组。根据您的值,以下是一个示例:
$array1 =array('1','2','1','3','1');
$array2 =array('1','2','3');
$results = array();
foreach ($array2 as $key2=>$val2) {
$result = array();
foreach ($array1 as $key1=>$val1 ) {
if ($val2 == $val1) {
array_push($result,$key1);
}
}
array_push($results,array("val"=>$val2,keys=>$result ));
}
echo json_encode($results);
结果将是:
[{"val":"1","keys":[0,2,4]},
{"val":"2","keys":[1]},
{"val":"3","keys":[3]}]