2013-05-07 91 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]}]