【问题标题】:array_diff not working as expected ? What could be the reason?array_diff 没有按预期工作?可能是什么原因?
【发布时间】:2011-09-08 12:48:12
【问题描述】:

我有两个数组
检查代码

$array1 = array(0=>'215',1=> '225');
$array2 = array(0=>'225');
$diff_result = array_diff($array1, $array2);
$diff = array_values($diff_result);
print_r($array1);echo "<br>";
print_r($array2);echo "<br>";
print_r($diff_result);echo "<br>";
print_r($diff);

现在我得到了答案

Array ( [0] => 215 [1] => 225 )
Array ( [0] => 225 )
Array ( [0] => 215 [1] => 225 )
Array ( [0] => 215 [1] => 225 ) 

但根据array_diff手册应该是

Array ( [0] => 215 [1] => 225 ) 
Array ( [0] => 225 ) 
Array ( [0] => 215 ) 
Array ( [0] => 215 )

可能是什么问题

【问题讨论】:

  • 我认为答案是关键。尝试不使用密钥,使用 $array1 = array('215', '225'); $array2 = array('225');
  • @trampi:你写的和例子一模一样。即使不是,array_diff 也不关心密钥。
  • @trampi:这完全不正确。键是从 0 开始的连续整数,如果由 PHP 自动填充,它们将是相同的。
  • @WasimKarani:两个 人运行了您的代码并获得了正确的结果(我什至给出了链接)。在这一点上,我认为问题不是键,而是您运行的不是您在此处提供的代码,或者您的系统需要重新启动。

标签: php arrays array-difference


【解决方案1】:

我按原样运行了您的代码,得到了正确的结果。

$array1 = array(0=>'215',1=> '225');
$array2 = array(0=>'225');
$result = array_diff($array1, $array2);
$diff_result = array_diff($array1, $array2);
$diff = array_values($diff_result);
print_r($array1);echo "<br>";
print_r($array2);echo "<br>";
print_r($diff_result);echo "<br>";
print_r($diff);

输出:

Array ( [0] => 215 [1] => 225 ) 
Array ( [0] => 225 ) 
Array ( [0] => 215 ) 
Array ( [0] => 215 )

我的 php -v

PHP 5.3.5-1ubuntu7.2 with Suhosin-Patch (cli) (built: May  2 2011 23:18:30) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

你运行的是什么版本的php,

【讨论】:

  • 请帮帮我,我没有得到答案
【解决方案2】:

这对我不起作用(不知道为什么)所以我更改了代码以计算两个数组的差异

for ($i = 0; $i < count($array2); $i++) { 
    for ($j = 0; $j < count($array1); $j++) {
        if(!in_array($array1[$j],$array2)){ 
            $resArr[] = $array1[$j]; 
        } 
    } 
}
print_r($array1);echo "<br>";
print_r($array2);echo "<br>";
print_r($resArr);echo "<br>";

感谢您的时间

【讨论】:

  • 可以去掉外循环。
猜你喜欢
  • 1970-01-01
  • 2022-11-04
  • 1970-01-01
  • 2020-04-29
  • 2014-08-04
  • 2021-01-03
  • 2018-11-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多