• 締切済み

array_multisortについて

階層が深いのですが以下のような多次元配列があります。PHP5です。 $data['data'][0]['name'] = 'あああ'; $data['data'][0]['price0'] = '80'; $data['data'][1]['name'] = 'いいい'; $data['data'][1]['price0'] = '350'; $data['data'][2]['name'] = 'ううう'; $data['data'][2]['price0'] = '514'; これをprice0の値でソートしたく調べたところarray_multisortが使えそうで 以下のようにしてみましたがエラーになってしまいます。 array_multisort($price0, SORT_DESC, $data['data']); マニュアルを見たのですがよくわからずでどうすればうまくソートできるでしょうか?

みんなの回答

  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

>> どうすればうまくソートできるでしょうか? 前処理を1行追加するだけでOKです。 <?php $data['data'][0]['name'] = 'あああ'; $data['data'][0]['price0'] = '80'; $data['data'][1]['name'] = 'いいい'; $data['data'][1]['price0'] = '350'; $data['data'][2]['name'] = 'ううう'; $data['data'][2]['price0'] = '514'; foreach($data['data'] as $v) $price0[] = $v['price0'];//追加 array_multisort($price0, SORT_DESC, $data['data']); print_r($data); ?>

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

usortのほうがわかりやすくないですか? <? $data['data'][0]['name'] = 'あああ'; $data['data'][0]['price0'] = '80'; $data['data'][1]['name'] = 'いいい'; $data['data'][1]['price0'] = '350'; $data['data'][2]['name'] = 'ううう'; $data['data'][2]['price0'] = '214'; $data['data'][3]['name'] = 'えええ'; $data['data'][3]['price0'] = '11'; function cmp($a, $b){ if($a['price0']==$b['price0']) return 0; return ($a['price0'] < $b['price0']) ? -1 : 1; } print "<pre>"; print_r($data); usort($data['data'], "cmp"); print_r($data); print "</pre>"; ?>

関連するQ&A