2013-05-07 89 views
2

在这里,我有一个问题:从PHP数组显示array_key?

我有两个数组类似如下:

$array1 = array('1','2','1','3','1'); 
    $array2 = array('1','2','3'); // Unique $array1 values 

与数组2的值,我需要一个数组1的所有密钥

预期成果是:

1 => 0,2,4 
2 => 1 
3 => 3 

这里它籼稻TES array2 value =>array1 keys

+1

我试图与array_search(1,$阵列1)它显示只有一个匹配的钥匙..... ........ – 2013-05-07 13:26:26

回答

9

只需使用一个循环:

$result = array(); 
foreach ($array1 as $index => $value) { 
    $result[$value][] = $index; 
} 
+2

伟大的兄弟我只需要这个............ – 2013-05-07 13:34:03

1

如果传递array_keys第2个参数,它会给你所有与该值的键。

所以,只需循环$array2并从$array1获得密钥。

$result = array(); 
foreach($array2 as $val){ 
    $result[$val] = array_keys($array1, $val); 
} 
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]}]