-2

array_diff_assoc両方ともarray_diff_uassoc同じことを行います(追加のインデックスチェックを使用して差分b / w配列を計算します)。唯一の違いは、後の方がaを許可することcallbackです。

違いは単なるコールバックです。この場合、array_diff_uassocの代わりに優先する必要がありarray_diff_assocます。

コールバックが以下と同じように行われる場合はすべての場合であることを理解したいのですが、array_diff_uassoc

function key_compare_func($a, $b)
{
    if ($a === $b) {
        return 0;
    }
    return ($a > $b)? 1:-1;
}
4

1 に答える 1

3

実際の違いは、ユーザー定義関数はデフォルト以外のものにすることができるということです。コールバックは自分で定義します。

ドキュメントに簡単な例しか記載されていないからといって、それが唯一の可能性であるとは限りません。これは、多次元配列の要素を比較するために使用するコールバック関数の工夫された例です。

function key_compare_func($a, $b) {
    if ($a['key']['subkey'] === $b['key']['subkey']) {
        return 0;
    }
    return ($a['key']['subkey'] > $b['key']['subkey'])? 1:-1;
}

編集: PHP7には宇宙船があります!

function key_compare_func($a, $b) {
    return $a['key']['subkey'] <=> $b['key']['subkey']
}
于 2013-01-22T17:37:55.710 に答える