0

我有一个二维数组

$list['1'][] ='23';
$list['1'][] ='24';
$list['1'][] ='25';
$list['1'][] ='26';

和一维数组

$items={"23","24","36"};

following is right syntax for 1d array.

$items=array("23","24","36");

我想检查 $List['1'] 值是否在 $items 内,如果项目不在,则将它们存储到新数组中

我试过

$different['1'][] = array_diff($items,$list['1']);

但如果没有区别,它会创建一个带有键但为空值的数组

$不同['1]

['1'] => Array
    (
        [0] => 
    )
4

6 回答 6

2
if($diff = array_diff($items,$list['1])){
     $different['1'][] = $diff;
}

这应该可以解决问题

于 2012-08-08T09:34:44.937 回答
0

我无法重现这种行为。

<?php
echo 'php: ', PHP_VERSION, "\n";
$list = array(1=>array());
$list[1][]=23;
$list[1][]=24;
$list[1][]=25;
$list[1][]=26;

$items = array(23,24);

var_dump(array_diff($items,$list[1]));

在我的机器上打印

php: 5.4.1
array(0) {
}
于 2012-08-08T09:37:11.117 回答
0

试试这个:

$item = array('23','24');
foreach($list['1'] as $listItem) {
    if(!in_array($listItem, $item)) {
        $different['1'][] = $listItem;
    }
}
于 2012-08-08T09:38:45.343 回答
0
$list['1'][] ='23';
$list['1'][] ='24'; 

$items=array("23","24");

$different['1'][] = array_diff($items,$list['1']);

var_dump($different['1']); // output: array(1) { [0]=> array(0) { } }

$different['1'] = array_diff($items,$list['1']);

var_dump($different['1']); // output: array(0) { }
于 2012-08-08T09:40:09.023 回答
0
      $list['1'][] ='23';
    $list['1'][] ='24';
    $list['1'][] ='25';
    $list['1'][] ='26';

    $items=array("23","24");

$different['1'][] = array_diff($list['1'],$items);

你的 arr_diff 函数的参数序列是错误的。这就是为什么它会给你null。试试上面的代码。

于 2012-08-08T09:43:04.843 回答
0

对 $list 数组中的每个元素使用 for 循环,并在该循环中添加以下代码

if(!in_array($list[1][0], $items)){
  array_push($items, $list[1][3]);
}

print_r($items);
于 2012-08-08T09:45:03.503 回答