如何过滤来自其他阵列的匹配数组键的数组?
问题描述:
这里是我的数组:如何过滤来自其他阵列的匹配数组键的数组?
$not_wanted = array('example1', 'example2');
$from_this_array= array(
'example1'=>'value1',
'example2'=>'value2',
'should_stay'=>'value3'
)
末我应该有
array('should_stay'=>'value3')
什么,我一直在努力,但它有一个疾病
public function aaData($array){
$aaData =array();
foreach ($array as $key=>$item){
if(array_key_exists($key, $this->unset_array)){
unset($array[$key]);
$aaData[] = $item;
}
}
var_dump($aaData);
return $aaData;
}
答
一个可行的方法:
$not_wanted = array('example1', 'example2');
$from_this_array= array(
'example1'=>'value1',
'example2'=>'value2',
'should_stay'=>'value3'
);
print_r(array_diff_key(
$from_this_array, array_flip($not_wanted)));
Demo。
请注意array_diff在这里是不相关的,因为它检查值,而不是键。由于您的第一个($not_wanted
)数组包含值,因此应将其翻转(变成散列)以使用array_diff_key。
答
只是为了记录在案,这里是你的代码的工作版本:
function aaData($array){
$aaData =array();
foreach ($array as $key=>$item){
if(!in_array($key, $this->unset_array)){
$aaData[$key] = $item;
}
}
var_dump($aaData);
return $aaData;
}
您使用的存储应排除在外的按键阵列上array_key_exists
- 但这阵中,他们的价值观,不是钥匙,所以你需要in_array()
。同样,在原始数组上执行unset()
也没有意义,因为您只会返回修改后的数组。
+0
是的,我知道是一个坏的方法,我在做什么,谢谢你! – fefe 2013-02-27 22:24:38
答
只要做到:
foreach ($from_this_array as $key => $val) {
if (in_array($key, $not_wanted)) {
unset($from_this_array[$key]);
}
}
答
function aaData($array, $not_wanted){
foreach ($not_wanted as $key){
if(isset($array[$key])){
unset($array[$key]);
}
}
return $array;
}
$not_wanted = array('example1', 'example2');
$array= array(
'example1'=>'value1',
'example2'=>'value2',
'should_stay'=>'value3'
);
print_r(aaData($array, $not_wanted));
RTLM:http://php.net/foreach – 2013-02-27 22:11:15