最新のphp環境でスクリプトを実行する場合、警告は、ジョブに間違ったツールを使用していることを示しているはずです。
悪いコード:(デモ)
$array1 = [[12 => 'new q sets'], [11 => 'common set']];
$array2 = [[11 => 'common set']];
var_export(array_diff_assoc($array1, $array2));
悪い出力:
Warning: Array to string conversion in /in/jIUcq on line 6
Warning: Array to string conversion in /in/jIUcq on line 6
array (
1 =>
array (
11 => 'common set',
),
)
関連する/一致する行の第1レベルのインデックスが異なる可能性があるため、実際には第1レベルのインデックスを比較する必要はありません。
代わりに、を使用array_udiff()
して関連行を比較する必要があります(最初のレベルのキーは無視してください)。array_udiff()
「宇宙船演算子」を使用すると、関数呼び出しを繰り返さずに、コールバックから予想されるように、3者間比較を行うことができます。以下のスニペットで、データの行$a
を$b
表します。
適切なコード:(デモ)
var_export(
array_udiff($array1, $array2, fn($a, $b) => $a <=> $b)
);
適切な出力:
array (
0 =>
array (
12 => 'new q sets',
),
)