-3

次の配列があります。

$franchise_a_status[] = array(
    'id'   => $franchise['franchise_id'],
    'text' => $franchise['franchise_surname']. ' ' .$franchise['franchise_firstname'].' '.'('.$distance.')'
);

$franchise 配列はデータベースから取り込まれ、距離変数はGoogle Distance Matrixから情報を取得します。配列を距離の順に並べ替えます-最も近いものから最も遠いものへ。

私はそれがこれと同じくらい簡単だと思った:

asort($franchise_a_status);

悲しいことに、私は間違っていました。この配列を距離に基づいて並べ替えるにはどうすればよいですか?

4

2 に答える 2

1

私はあなたにヒントを与えるだけusort()です。

比較関数を書く必要があります。その長い文字列からその距離を取得するのは簡単ではありませんが、何らかの理由でそのように保存しました。

于 2012-07-05T15:54:10.967 に答える
0

ここを使用しasortても役に立ちません。配列を再構築して使用することをお勧めしますksort

テストされていない例:

// some loop {

    $franchise_a_status[$distance . '_' . $franchise['franchise_id']] = array(
        'id'   => $franchise['franchise_id'],
        'text' => $franchise['franchise_surname'] . ' ' . $franchise['franchise_firstname'] . ' ' . '(' . $distance . ')'
    );

// }

ksort($franchise_a_status);

ksort配列をキーでソートします。キーの先頭に距離を置くことで、結果は距離でソートされます。id は、距離がたまたま同じである場合にフランチャイズを上書きしないようにするためにも必要です。

于 2012-07-05T15:57:40.920 に答える