2011-09-14 160 views
0

過濾掉鑰匙,我有以下陣列:從多維數組

array(2) { 
    [0] => array(4) { 
    ["presentation_id"] => int(143) 
    ["user_id"] => int(2) 
    ["session_id"] => int(46) 
    ["submission_id"] => int(190) 
} 
[1] => array(4) { 
    ["presentation_id"] => int(144) 
    ["user_id"] => int(2) 
    ["session_id"] => int(46) 
    ["submission_id"] => int(190) 
} 

我想是有由該陣列的只是某些鍵的陣列,例如:

array(2) { 
    [0] => array(4) { 
    ["presentation_id"] => int(143) 
    ["user_id"] => int(2) 
} 
[1] => array(4) { 
    ["presentation_id"] => int(144) 
    ["user_id"] => int(2) 
} 

任何想法?

+0

你有沒有考慮過使用循環? – Rijk

回答

2
$array = array_map(function ($arr) { 
    return array_intersect_key($arr, array_flip(array('presentation_id', 'user_id'))); 
}, $array); 

需要注意的是這個語法要求PHP 5.3+。

對於其他版本:

foreach ($array as &$arr) { 
    $arr = array_intersect_key($arr, array_flip(array('presentation_id', 'user_id'))); 
} 

我建議這種過度unset婷不必要的鍵(被別人所建議的),如果你一定要限制數組的某些元素。如果將來向陣列中添加更多元素,則不需要更新此代碼,但您需要更多可能不需要的元素。

+0

謝謝,我使用5.3,所以這是完美的 –

1

嘗試:

$newArray = array_map(function ($innerArray) { 
    unset($innerArray['session_id'], $innerArray['submission_id'] /*, and so on*/); 
    return $innerArray; 
}, $oldArray); 
+0

以快速,相同的代碼;) – Eineki

0

請使用foreach並取消您想要刪除的密鑰。像

foreach($data as $key=> $row){ 
    unset[$key] ["session_id"] ; 
}