4

2 つの配列があります。
コードを確認する

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

何が問題になる可能性がありますか

4

2 に答える 2

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のバージョン、

于 2011-09-08T13:21:57.857 に答える
1

それは私にとってはうまくいきませんでした(理由がわからない)ので、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>";

時間をありがとう

于 2011-09-08T14:34:30.563 に答える