我有以下数组:
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 :(得分: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
不需要的键(如其他人所建议的那样)。如果您以后向阵列添加更多元素,则无需更新此代码,但您必须unset
多个您可能不需要的元素。
答案 1 :(得分:1)
尝试:
$newArray = array_map(function ($innerArray) {
unset($innerArray['session_id'], $innerArray['submission_id'] /*, and so on*/);
return $innerArray;
}, $oldArray);
答案 2 :(得分:0)
请使用foreach并取消设置要删除的密钥。像
foreach($data as $key=> $row){
unset[$key] ["session_id"] ;
}