我有2个阵列。
<?php
$array1 = array('id' => 1, 'email' => 'example@example.com' , 'name' => 'john' );
$array2 = array('id', 'email');
我在编写代码时无法从array1中取消设置不是来自数组2的键值对。
这个问题与大多数示例不同,我的array2没有键值对的格式,只有键。
如何从array1中删除未在array2中指定的内容。
我当前的代码无效
foreach ($array1 as $key => $value) {
if (array_search($key, $array2)===false) {
unset($key);
}
}
答案 0 :(得分:6)
使用array_diff_key()
在第二个数组中保留不的值:
$array1 = array('id'=>1, 'email'=> 'email' , 'name'=>'john' );
$array2 = array('id','email');
$result = array_diff_key($array1, array_flip($array2));
或者,如果你想改变第一个数组:
$array1 = array_diff_key($array1, array_flip($array2));
编辑(误解)
使用array_intersect_key()
保留在第二个数组中的值:
$array1 = array_intersect_key($array1, array_flip($array2));
答案 1 :(得分:5)
答案 2 :(得分:0)
你必须通过索引unset
元素(从0开始)
例如
unset($array2[1]);
将删除电子邮件&#39;元件。
所以在你的情况下它应该是:
unset($array1[$key]);