2014-10-10 76 views
0

大家好,使用PHP!組合數組形式的值和鍵組合

我一直在尋找答案。 我有兩個數組 - Persons數組中的人員和其他索引數組。

Persons(array)   Selected indexes(array) 
    [0] => 'Mark'   [0] => 0 
    [1] => 'Jane'   [1] => 2 
    [2] => 'Bob'    [2] => 1 
    [3] => 'Jack'    

我想創建一個第三陣列僅由從在Selected indexes陣列組Persons數組中的元素。 有點像SELECT * FROM Persons WHERE 'Persons id' IN 'Selected indexes'但在PHP中,如果你知道我的意思嗎?

我可以「foreach」後者,並推送元素到新的陣列,但有一個較短的PHP解決方案,例如對於內聯使用?

編輯:哦,輸出應該是:

Selected persons(array)   
    [0] => 'Mark'    
    [1] => 'Jane'   
    [2] => 'Bob'  

(only 0, 2 and 1) 
+0

array_combine()與array_slice()和分鐘(的組合)和count()應該做的伎倆 – 2014-10-10 15:19:51

+0

HTTP:// PHP .net/array_intersect應該讓你開始,儘管它不會直接做你想做的。 – 2014-10-10 15:19:57

回答

3
$result = array_intersect_key($people, array_flip($selected)); 
+0

這是正確的!謝謝!在瀏覽手冊時,我儘量保持眼睛的開闊。 – Klamberext 2014-10-10 15:29:08

1

@Steve已經貼出這樣做最徹底的方法,這裏是一個替代

$counter = min(count($selected), count($persons)); 
$result = array_combine(
    array_slice($selected, 0, $counter), 
    array_slice($persons, 0, $counter) 
); 
0

這應該工作您!

<?php 

    $person = array('Mark', 'Jane', 'Bob', 'Jack'); 
    $selected = array(0, 2, 1); 
    $selectedPerson = array(); 


    foreach($selected as $key) 
     $selectedPerson[] = $person[$key]; 

    var_dump($selectedPerson); 

?> 
0

array_intersect_key()是你在找什麼

$Persons[0]='Mark'; 
$Persons[1]='Jane'; 
$Persons[2]='Bob'; 
$Persons[3]='Jack'; 

$Selected = array(0,2); 

$result = array_intersect_key($Persons, array_flip($Selected)) 

var_dump($result); // returns Mark, Bob.