php通过数组的另一个键过滤数组

php通过数组的另一个键过滤数组,php,arrays,Php,Arrays,我有两个数组 $x = array(1 => 'test1', 2 => 'test', 3 => 'test3', 4 => 'test4'); $y = array(1,4); 我想知道如何通过$y(键数组)过滤$x。因此,我期望的结果是(经过筛选) 这些阵列将非常大。因此,逐个取消设置在这里是不有效的。我希望任何数组函数都能做到这一点。是否可能???只需检查键是否存在,如果不存在,则将其分配给新数组。由于您需要新数组中的结果,因此可以这样做: $newArray

我有两个数组

$x = array(1 => 'test1', 2 => 'test', 3 => 'test3', 4 => 'test4');
$y = array(1,4);
我想知道如何通过
$y
(键数组)过滤
$x
。因此,我期望的结果是(经过筛选)


这些阵列将非常大。因此,逐个取消设置在这里是不有效的。我希望任何数组函数都能做到这一点。是否可能???

只需检查键是否存在,如果不存在,则将其分配给新数组。由于您需要新数组中的结果,因此可以这样做:

 $newArray=array();
 foreach($x as $key=>$value){
     if(!key_exists($key,$y))
     $newArray[$key]  =$value;
 }

//$newArray has what you need
试试这个:

$x = array(1 => 'test1', 2 => 'test', 3 => 'test3', 4 => 'test4');
$y = array(1,4);
$newArray = array();
foreach ($x as $key => $val)
{
    if(!in_array($key, $y))
        $newArray[$key] = $val;
}
print_r($newArray)
您正在寻找的


要过滤掉数组中的元素,可以使用php函数
array\u filter
如下

$z = array_filter($x, function($element) use ($y) {
    return !in_array($element, $y);
}, ARRAY_FILTER_USE_KEY);
使用($y)
是为了使函数能够访问
$y
数组过滤器\u使用\u键
是因为我们希望按键(例如1)而不是值(例如“test1”)进行过滤。

尝试以下操作:

<?php

$x = array(1 => 'test1', 2 => 'test', 3 => 'test3', 4 => 'test4');
$y = array(1,4);

$result=array_diff_key($x,array_flip($y));

print_r($result);

只需使用unset()删除在
$y
中找到的内容;这在之前的另一个帖子中已经提到:@DenisSolakovic谢谢你找到了重复的,我在这个问题上投了“接近重复”的一票。为什么要投反对票。它不是重复的&答案是他不想保持旧阵列不变吗?我没有在报纸上看到那部分question@DanyalSandeelo问题被编辑,输出在发布后立即反转…这将不起作用,因为第二个数组的值是第一个数组的键。不起作用。错误的价值观不起作用。不changes@RejoanulAlam我已经更新了我的答案。抱歉,示例不正确。好的,谢谢您的努力。问题提前解决了是的,终于解决了。谢谢
$z = array_filter($x, function($element) use ($y) {
    return !in_array($element, $y);
}, ARRAY_FILTER_USE_KEY);
<?php

$x = array(1 => 'test1', 2 => 'test', 3 => 'test3', 4 => 'test4');
$y = array(1,4);

$result=array_diff_key($x,array_flip($y));

print_r($result);