1

多次元配列を並べ替えようとしていますが、並べ替えはループ内で機能しますが、ループの実行後にその並べ替えが保存されません。並べ替えを固定するにはどうすればよいですか?

    function cmp_by_orderNumber($a, $b) {
        return $a["ORDER"] - $b["ORDER"];
    }

    foreach($response['content']['listings'] as $i => $v) {
        usort($v['MEMBERS'], "cmp_by_orderNumber");

        // sorted!
        echo '<pre>'; print_r($v); echo '</pre>';
    }

    // sort has reverted!
    echo '<pre>'; print_r($response['content']['listings']); echo '</pre>';
4

1 に答える 1

5

参照によって配列を反復処理する必要があります。

foreach($response['content']['listings'] as &$v) { // see the little & sign here
    usort($v['MEMBERS'], "cmp_by_orderNumber");

    // sorted!
    echo '<pre>'; print_r($v); echo '</pre>';
}

そうしないと、サブアレイがコピーされ、コピーは変更されますが、元は変更されません。

于 2013-06-05T14:43:42.367 に答える