• ベストアンサー

PHP 配列の並べ替え

phpでの配列操作に関して質問です。 配列 $fruit[]の中に [0]→{[name]りんご,[value]5} [1]→{[name]みかん,[value]6} [2]→{[name]メロン,[value]0} [3]→{[name]いちご,[value]1} [4]→{[name]ぶどう,[value]5} このようなデータが入っていたとして、 [value]の大きい順に並べ替えをしたいのですが、 どのような方法を行えば良いのでしょうか? 多分とても基礎的な問題だと思うのですが、 どうしても良い方法が思いつかないので、 どうぞ宜しくお願いします。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.1

ゆるっと書いてみましたが、なんか もっと良い書き方あるかもしれません。(´・ω・`) 二次元配列のソートの仕方忘れました。 <?php $f = array( 0 => array(name=> りんご, value=> 5) , 1 => array(name=> みかん, value=> 6) , 2 => array(name=> メロン, value=> 0) , 3 => array(name=> いちご, value=> 1) , 4 => array(name=> ぶどう, value=> 5)); print_r($f); uasort($f , cmp); function cmp($a , $b) { return ($a[value]<$b[value]); } print_r($f); ?> http://www.php.net/manual/ja/function.uasort.php

non05410
質問者

お礼

uasortの使用方法はうまくわからなかったのですが、 「二次元配列のソート」という言葉を提示して頂いたおかげで解決しました! foreach($fruit as $key => $row){ $count[$key] = $row['name']; } array_multisort($count,SORT_DESC,$fruit); 上記の方法でソートすることが出来ました! ありがとうございます!

関連するQ&A

  • PHPとJSで同じNAME属性を使いたい場合の配列処理の記述

    さきほどのNO.1508009(チェックに応じて違うチェックボックスをアクティブにしたい)の件で、 HTMLファイルへのチェックボックス配置目的がPHPによる検索フォームとして利用することですが、 PHP側でSQLを発行するための配列の参照先にもなってしまっているため、実際のHTMLソースでは <INPUT TYPE="CHECKBOX" NAME="fruit" value="りんご">[a] りんご <INPUT TYPE="CHECKBOX" NAME="fruit" value="みかん">[b] みかん <INPUT TYPE="CHECKBOX" NAME="fruit" value="ぶどう">[c] ぶどう <INPUT TYPE="CHECKBOX" NAME="fruit" value="バナナ">[d] バナナ でなく、 <INPUT TYPE="CHECKBOX" NAME="fruit[]" value="りんご">[a] りんご <INPUT TYPE="CHECKBOX" NAME="fruit[]" value="みかん">[b] みかん <INPUT TYPE="CHECKBOX" NAME="fruit[]" value="ぶどう">[c] ぶどう <INPUT TYPE="CHECKBOX" NAME="fruit[]" value="バナナ">[d] バナナ とかかれています(NAME属性内に[])。なのでjchさんにご提示いただいた function check() { var v = document.kkk.food[0].checked; for(var i=0; i<3; i++){ if(v) { document.kkk.fruit[i].disabled = false } else { document.kkk.fruit[i].disabled= true; } } document.kkk.fruit[3].disabled= true; } を使わせてもらおうとすると不整合を起こしてしまいます。 かといって、安直に以下のようにかくと構文エラーになってしまいます。 document.kkk.fruit[][i].disabled = false ここでPHP側が使いたい配列表現を活かしつつ、jchさんのスクリプトも使いたい場合に 何かうまい書き方はありますでしょうか? よろしくお願い致します。

  • 配列要素

    ファイルから読み込んだ、要素数の分からない配列があります。 前から2つずつ順に表示したいのですが、どうしたらよいでしょうか? <ファイルfruit.datの内容>―――→商品名(全角) 半角数字 りんご 210 いちご 350 みかん 390 ぶどう 500 レモン 100 柿 200 <<表示>> 商品:りんご 210円    いちご 350円    みかん 390円 商品:ぶどう 500円 商品:レモン 100円    柿 200円 open(RF,"<fruit.dat"); while(<RF>){ @data=split; ---<ここで処理>--- } close(RF); このような感じです。 配列@dataから2つずつ表示させたいんです。 良い方法がありましたら、教えてください。

    • ベストアンサー
    • Perl
  • 多次元配列

    初歩的な質問ですみません。 PHPプログラミングでの質問です。 仮に、多次元配列Aに、 Array( [0] => Array ( [0] => 6 ) [1] => Array ( [0] => 2 [1] => 1 ) [2] => Array ( [0] => 0 [1] => 5 [2] => 4 ) ) 多次元配列Bに、 Array( [0] => Array ( [0] => りんご ) [1] => Array ( [0] => ぶどう [1] => パイナップル ) [2] => Array ( [0] => みかん [1] => すいか [2] => メロン ) ) のように値が入っている場合、配列Aの値を参照して 値の大きいものから順に、それに対応する配列Bの値を取り出し、 あたらしい配列Cに代入する処理の書き方を教えて下さい。 上記の例ですと、配列Cが、 Array ( [0] => りんご [1] => すいか [2] => メロン [3] => ぶどう [4] => パイナップル [5] => みかん ) となるようにしたいです。 よろしくお願いします。 長文失礼しました。

    • ベストアンサー
    • PHP
  • 二次元配列の基礎の基礎

    二次元配列という概念を知って興味を持ち、 ちょっと自分でやってみたのですが、どうしてもうまくいきません。(T-T) php.netやgoogleであちこち2時間以上見てまわりましたが、 あまりに初歩的過ぎるのか、難しいものばかりで撃沈しました...。 お手数ですが、どうぞよろしくお願いいたします。 <?php $fruits[] = array("orange", "みかん"); $fruits[] = array("apple", "りんご"); $fruits[] = array("grape", "ぶどう"); print_r($fruits); // 出力結果 // Array ( [0] => Array ( [0] => orange [1] => みかん ) [1] => Array ( [0] => apple [1] => りんご ) [2] => Array ( [0] => grape [1] => ぶどう ) ) // 以下でぶどうと出したいのですが、Array[1]と表示されてしまいます。 echo "$fruits[2][1]"; ?>

    • 締切済み
    • PHP
  • 配列の並べ替え

    keyとvalueを持つ配列をvalueを元に並べ替えようとsortを利用したところキーが勝手に0から順に作成されてしまいました。キーを保持した状態で並べ替えは出来ないでしょうか?教えてください。

    • ベストアンサー
    • PHP
  • 配列の中身を入れ替える方法

    非常に初心者的な問題だとは思いますがよろしくお願いします Array ( [0] => みかん [1] => りんご [2] => バナナ [3] => キウイ [4] => メロン [5] => スイカ) 上記のような配列があったとしまして、 [2] => バナナ [3] => キウイ [4] => メロン を、 [2] => イチゴ [3] => もも [4] => さば に変更したいのですが、 どのようにすればよいでしょうか・・・ かれこれ2日ほどやっているのですがわかりません・・・ よろしくお願いします。

    • 締切済み
    • PHP
  • 検索後にチェックボックスのON/OFF状態を再現して表示したい

    下記の例で、表示されている sample.php にあるチェックボックスを ON/OFFしてから再計算ボタンを押下後、チェックボックスのON/OFF状態を 引き継いで(維持して)sample.phpを表示させることはできませんか? 「りんご」だけにチェックして再計算ボタンを押下後、再表示された sample.php は「りんご」だけチェックが入っているイメージです。 <form action="./sample.php" method="post"> <input type="checkbox" name="fruit[]" value="apple">りんご</td> <input type="checkbox" name="fruit[]" value="orange">みかん</td> <input type="checkbox" name="fruit[]" value="grape">ぶどう</td> <input type="submit" name="exec" value="再計算"> </form> なお、name="fruit[]" は配列になっていて、SQL発行に生かされています。

    • ベストアンサー
    • PHP
  • PHP 配列について

    phpとDBでシステムを作っています DBをよみながら配列と比較しています。 ループ中の配列で2回目以降がどうしても配列の値が入りません $Baitai[$cnt]で1回目は配列の値が来るのですが 2回目以降が一部の文字bしか入りません ご教授お願いします。 while($arr_record = mysql_fetch_assoc($rs)) { foreach($arr_record as $field_name => $field_value) {            if($field_value<>"") { echo $Baitai[$cnt]; $Baitai="Baitai".$k; if($Baitai[$cnt]==$field_value) { ?>       <input type="checkbox" value="<?php echo $field_value;?>" Name="<?php echo $Baitai;?>" checked><?php echo $field_value;?> <?php } else { ?> <input type="checkbox" value="<?php echo $field_value;?>" Name="<?php echo $Baitai; ?>"><?php echo $field_value;?> <?php } } $cnt=$cnt+1;             $k=$k+1; } }

    • ベストアンサー
    • PHP
  • PHPのfor文とforeach文の使い方

    PHPのfor文とforeach文を使って、 ・果物の名前を4回繰り返す ・繰り返しの2回目と4回目は、"食べてください"という文字列を入れる という出力を返したいと考えています。 完成イメージは次のとおりです。 (1回目のループ) りんご ばなな ぶどう みかん (2回目のループ) 食べてください りんご ばなな ぶどう みかん (3回目のループ) りんご ばなな ぶどう みかん (4回目のループ) 食べてください りんご ばなな ぶどう みかん しかし自分が作成したプログラムでは、 次の2点について問題があります。 ・すべての繰り返しの前に"食べてください"が入ってしまう ・for文のループが止まらない 完成イメージの通りのプログラムにするためには、 どのように修正すればよろしいでしょうか? ご存知の方がいらっしゃいましたら、 ご教示願います。 ○質問の補足 自分が作成したプログラムは以下のとおりです。 for($i = 0; $i < 4; $i++) { if (($i = 1) || ($i = 3)) { echo "食べてください"; echo "</br>"; }; $fruits = array("りんご", "ばなな", "ぶどう", "みかん"); foreach ($fruits as $value) { echo $value; echo "</br>"; } } 以上、よろしくお願い申し上げます

    • ベストアンサー
    • PHP
  • PHPで配列から値を取得したい

    PHP勉強中の初心者です。 初歩的な質問なのですが以下のような配列から「りんご」、「バナナ」などの値をすべて取得するにはどうすればいいのでしょうか? Array ( [input] => 自転車 [status] => 0 [result] => Array ( [0] => Array ( [0] => りんご ) [1] => Array ( [0] => バナナ ) [2] => Array ( [0] => ミカン ) [3] => Array ( [0] => オレンジ ) [4] => Array ( [0] => ブドウ ) [5] => Array ( [0] => パイナップル ) ) )

    • ベストアンサー
    • PHP