2013-01-08 39 views
1

我有一個數組$ data的數組。如何高效地提取基於一組鍵的子數組

隨着

print_r($data); 

返回

Array ( 
[1401] => Array ([0] => 94 [1] => 2 [2] => 159) 
[1402] => Array ([0] => 94 [1] => 2 [2] => 50 [3] => 23 [4] => 159) 
[1403] => Array ([0] => 94 [1] => 2 [2] => 50) 
[1404] => Array ([0] => 94 [1] => 90 [2] => 50 [3] => 23) 
[1405] => Array ([0] => 94 [1] => 90) 
[1406] => Array ([0] => 94 [1] => 90 [2] => 23) 
[1407] => Array ([0] => 94 [1] => 90 [2] => 50) 
)

的關鍵是一組數字。我需要從這個數組中提取一個只有存儲在另一個變量中的鍵的子數組。

$toextract=array(1402,1406); 

除了建立一個新的數組與循環,是否有一個更簡單的方法。我需要多次運行此命令,因此速度非常重要。

回答

6
$result = array_intersect_key($data, array_flip(array(1402, 1406)); 

array_intersect_key()

+0

array_flip!這就是我所錯過的。 –

+0

即使沒有'array_flip()',使用給定的鍵創建數組也是非常簡單的;)'$ r = array(); foreach(array(1402,1406)爲$ k)$ r [$ k] = null;'剛纔說 – KingCrunch

相關問題