PHP删除数组值

时间:2014-04-01 08:23:37

标签: php arrays codeigniter

我有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);
}
}

3 个答案:

答案 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)

你做得对,只是你unset的方式不正确:

unset($key);

应该是

unset($array1[$key]);

<强> Demo

答案 2 :(得分:0)

你必须通过索引unset元素(从0开始) 例如  unset($array2[1]); 将删除电子邮件&#39;元件。

所以在你的情况下它应该是: unset($array1[$key]);