現在の位置: ホーム> 最新記事一覧> カスタム比較関数に合格するのを忘れた場合、エラーが発生します

カスタム比較関数に合格するのを忘れた場合、エラーが発生します

M66 2025-06-06

PHPでは、 array_diff_uassoc()は、2つ以上の配列のキー値ペアを比較し、カスタムキー値の比較関数に基づいて違いを見つける非常に便利な関数です。 array_diff_uassoc()を使用すると、カスタム比較関数に合格するのを忘れた場合、エラーの問題が発生します。

array_diff_uassoc()関数の紹介

array_diff_uassoc()関数は、2つ以上の配列のキー値ペアを比較し、違いを含む配列を返します。 array_diff_assoc()とは異なり、 array_diff_uassoc()を使用すると、カスタム比較関数を渡してキー値を比較できます。構文は次のとおりです。

 array_diff_uassoc(array $array1, array $array2, callable $value_compare_func): array
  • array1 :最初の配列。

  • Array2 :2番目の配列、またはより多くの配列が比較に使用されます。

  • value_compare_func :配列内のキー値ペアを比較するカスタム比較関数。

コードの例

Array_diff_uassoc()を使用して適切に動作する方法を示す簡単な例を次に示します。

 <?php
$array1 = [
    'a' => 1,
    'b' => 2,
    'c' => 3
];

$array2 = [
    'a' => 1,
    'b' => 3,
    'd' => 4
];

// カスタム比較関数,値を比較します
function compare_values($value1, $value2) {
    return $value1 - $value2;
}

$result = array_diff_uassoc($array1, $array2, 'compare_values');

print_r($result);
?>

出力結果:

 Array
(
    [b] => 2
    [c] => 3
)

上記のコードでは、 array_diff_uassoc()はCompare_values関数に従って2つの配列のキー値ペアを比較し、 array2 arrayとは異なるアレイのキー値ペアを返します。

カスタム比較関数に合格するのを忘れると、エラーが発生するのはなぜですか?

array_diff_uassoc()を呼び出すときにカスタム比較関数に渡すのを忘れた場合、PHPはエラーをスローします。 array_diff_uassoc()関数の3番目のパラメーターは、配列要素の値を比較するコールバック関数です。このコールバック関数が渡されない場合、PHPはキー値の比較を実行できず、エラーが自然に発生します。

エラー例:

 <?php
$array1 = [
    'a' => 1,
    'b' => 2,
    'c' => 3
];

$array2 = [
    'a' => 1,
    'b' => 3,
    'd' => 4
];

// 忘记传入カスタム比較関数
$result = array_diff_uassoc($array1, $array2);

print_r($result);
?>

出力エラー:

 Warning: array_diff_uassoc() expects parameter 3 to be a valid callback in /path/to/script.php on line X

上記のように、PHPは、3番目のパラメーター(カスタム比較関数)が有効なコールバック関数でなければならないという警告を投げかけます。このパラメーターを渡さないと、PHPは配列比較を実行し続けることができなくなり、プログラムが中断され、エラーが発生します。

解決

この問題の解決策は非常に簡単です。Array_diff_uassoc ()を呼び出すときは、有効なカスタム比較関数が常に提供されることを確認してください。たとえば、前の例では、 Compare_Values関数を3番目のパラメーターとして使用します。

 $result = array_diff_uassoc($array1, $array2, 'compare_values');

エラーが発生しないように、 array_diff_uassoc()が呼び出されるたびに有効なコールバック関数を渡すようにしてください。

要約します

array_diff_uassoc()は、カスタムルールに基づいて配列キー値ペアの違いを比較できる強力なPHP関数です。ただし、カスタム比較関数に合格するのを忘れた場合、エラーが発生します。したがって、このエラーを回避するために、必ず有効なコールバック関数を提供してください。