2012-08-08 161 views
0

我有一个二维数组inarray二维数组

$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"); 

我要检查是否$表[“1”值是里面的$项目不如果项目不然后将它们存储到一个新的数组

我试图

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

但如果没有区别它创建了密钥,但空值的数组

$不同['1]

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

添加以下代码根据数组差的当前的例子的结果是正确的,因为$物品1的所有元素的数组中存在的$ list ['1']。那么这里有什么问题? – 2012-08-08 09:37:31

+1

Plz首先修复语法错误。 – xdazz 2012-08-08 09:41:21

+0

@ Shades88想接受,但它需要7分钟 – meWantToLearn 2012-08-08 09:59:52

回答

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

这应该做的伎俩

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) { 
} 
0

上打印试试这个:

$item = array('23','24'); 
foreach($list['1'] as $listItem) { 
    if(!in_array($listItem, $item)) { 
     $different['1'][] = $listItem; 
    } 
} 
+0

对不起,以前有一个严重的错误。修正 – Shades88 2012-08-08 09:47:09

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) { } 
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。尝试上面的代码。

0

使用for循环中的$列表数组的每一个元素,并在该循环

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

print_r($items);