• ベストアンサー
  • 暇なときにでも

配列により得られた順位を徐々に表示する方法

補足欄では文字数に制限があるようなので改めて質問致します。http://oshiete1.goo.ne.jp/kotaeru.php3?q=2435625 の質問の続きですが、テーブルを使わないで、新たに新しい例を挙げて書き直して見ました。以下のような(8カ国の現在の気温の順位)場合、処理結果を徐々に表示させたいのですが、flush()関数をどの位置に書き込めば良いのでしょうか? <?php //アメリカの現在の気温を変数 $kion1 として取得 //イギリスの現在の気温を変数 $kion2 として取得 //フランスの現在の気温を変数 $kion3 として取得 //イタリアの現在の気温を変数 $kion4 として取得 //ドイツの現在の気温を変数 $kion5 として取得 //日本の現在の気温を変数 $kion6 として取得 //ロシアの現在の気温を変数 $kion7 として取得 //ギリシャの現在の気温を変数 $kion8 として取得 $Name=array("アメリカ","イギリス","フランス","イタリア","ドイツ","日本","ロシア","ギリシャ"); $Kion=array($kion1,$kion2,$kion3,$kion4,$kion5,$kion6,$kion7$kion8); array_multisort($Kion,SORT_DESC,SORT_NUMERIC,$Name,SORT_DESC,SORT_STRING); $rank=1; for($i=0;$i<count($Name);$i++){ print("第".$rank."位".$Name[$i]." ".$Kion[$i]."<br>"); if($Kion[$i] != $Kion[$i+1]){ $rank=$i+2; } } ?> 変化が著しい気温を変数として配列に入れているので配列の要素が8個しかなくても表示されるまで20秒ぐらい処理に時間がかかるため、一挙に表示するよりも徐々に表示した方が良いと思いました。アドバイスの程よろしくお願い致します。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数294
  • ありがとう数1

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

  • ベストアンサー
  • 回答No.3
  • php504
  • ベストアンサー率42% (926/2160)

>配列を使用して順位を付ける場合、flush()関数は適用できないと解釈してよろしいでしょうか? flush自体は使えますが使わなくても配列に入れた後の処理は一瞬で終わると思われるので意味が無いでしょう。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご返信ありがとうございます。やはりPHPに関しての自分のレベルの低さを痛感致しました。これからもっと勉強致します。また何かございました時にはよろしくお願い致します。

関連するQ&A

  • 順位のところを画像にする方法

    前回私がしました(http://oshiete1.goo.ne.jp/qa2429369.html)の質問に通ずるのですが、新たに質問させて頂きます。 例えばボーリングのスコアを順位をつけて並べたいのですが、 -------------------------------------- <?php $Name=array("Aさん","Bさん","Cさん","Dさん","Eさん","Fさん"); $Count=array(123,198,123,117,123,202); array_multisort($Count,SORT_DESC,SORT_NUMERIC,$Name,SORT_DESC,SORT_STRING); $rank=-1; for($i=0;$i<count($Name);$i++){ if($Count[$rank] != $Count[$i]) $rank = $i; print("第".($rank + 1)."位:".$Count[$i]." ".$Name[$i]."\n"); } ?> 以上の順位の所を「○位」と書かれた画像にしたいのですが、以下のやり方でOKでしょうか?とりあえず表示されたのですが、もっと合理的な良い方法があるかと思いまして。 ---------------------------------------- 「第1位」と書かれた画像→0.gif 「第2位」と書かれた画像→1.gif 「第3位」と書かれた画像→2.gif ・      ・      ・ という風に上の画像を用意しておきます。そこで <?php $Name=array("Aさん","Bさん","Cさん","Dさん","Eさん","Fさん"); $Count=array(123,198,123,117,123,202); array_multisort($Count,SORT_DESC,SORT_NUMERIC,$Name,SORT_DESC,SORT_STRING); $rank=-1; for($i=0;$i<count($Name);$i++){ if($Count[$rank] != $Count[$i]) $rank = $i; print("<img src='".$rank.".gif'>:".$Count[$i]." ".$Name[$i]."\n"); } ?> ------------------------------------------------------------ どなたか吟味の程よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 順位を付ける時のスコアの重複について

    質問致します。例えばボーリングのスコアを順位をつけて並べたいのですが、参考ページ(http://oshiete1.goo.ne.jp/kotaeru.php3?q=561384)を元に以下の様に書いてみました。 ---------------------------------------- <?php $Name=array("Aさん","Bさん","Cさん","Dさん","Eさん","Fさん"); $Count=array(123,198,123,117,123,202); array_multisort($Count,SORT_DESC,SORT_NUMERIC,$Name,SORT_DESC,SORT_STRING); print("第1位:".$Count[0]." ".$Name[0]."<br>"); for($i=1;$i<count($Name);$i++){ if($Count[$i] != $Count[$i-1]){ print("第".($i+1)."位:".$Count[$i]." "); } print($Name[$i]."<br>"); } ?> ------------------------------------------------ しかしながら以上を実行してみますと順位の表示のされ方がうまくいきません。うまくいかない箇所はスコア(123)が3人並んだ場合に以下のようにしたいのですが、ならなくて苦闘しております。どのように書換えればよろしいのでしょうか。アドバイス頂ければと存じます。よろしくお願い致します。 第1位 202 Fさん 第2位 198 Bさん  第3位 123 Aさn 第3位 123 Cさn 第3位 123 Eさん 第6位 117 Dさん 

    • ベストアンサー
    • PHP
  • flush()関数でページを徐々に表示する方法

    質問致します。PHPスクリプトを処理する際、全て処理し終わった後、いっきにページに表示されるのが普通だと思うのですが、これを段階的に表示したいのですが、それには出力バッファをオフにする。つまりflush()関数を使えばOKと聞きました。以下の例でいえば、どの場所にこのflush()関数を入れれば良いのでしょうか? <?php $Name=array("Aさん","Bさん","Cさん","Dさん","Eさん","Fさん"・・・この後1000件続く); $Count=array(123,198,123,117,123,202・・・この後1000件続く); array_multisort($Count,SORT_DESC,SORT_NUMERIC,$Name,SORT_DESC,SORT_STRING); print("第1位:".$Count[0]." ".$Name[0]."<br>"); for($i=1;$i<count($Name);$i++){ if($Count[$i] != $Count[$i-1]){ print("第".($i+1)."位:".$Count[$i]." "); } print($Name[$i]."<br>"); } ?> 以上のように1000件もの順位を表す為、徐々に表示したいというのが私のやりたい事です。 参考ページ(http://oshiete1.goo.ne.jp/kotaeru.php3?q=1248483)等を見たのですが、初心者な者で太刀打ちできないでおります。 具体的にflush()関数をここに入れるという風にご指摘頂ければ幸いでございます。よろしくお願い致します。

    • ベストアンサー
    • PHP

その他の回答 (2)

  • 回答No.2
  • php504
  • ベストアンサー率42% (926/2160)

とりあえず処理中とか表示するだけなら <?php //↓タグ等で256バイト以上出力があれば不要。 echo str_repeat(" ", 256); // IE用のダミーデータ(IE自体が256バイトほどバッファするので) echo "アメリカの気温を取得中・・・<br>\n"; ob_flush(); flush(); //アメリカの現在の気温を変数 $kion1 として取得 echo "イギリスの気温を取得中・・・<br>\n"; ob_flush(); flush(); //イギリスの現在の気温を変数 $kion2 として取得 以下繰り返し のような感じになります。

共感・感謝の気持ちを伝えよう!

  • 回答No.1
  • php504
  • ベストアンサー率42% (926/2160)

気温の取得に時間がかかるのであれば配列に入れて表示を開始するまでの時間は変わらないと思います。 <?php //アメリカの現在の気温を変数 $kion1 として取得 //イギリスの現在の気温を変数 $kion2 として取得 //フランスの現在の気温を変数 $kion3 として取得 //イタリアの現在の気温を変数 $kion4 として取得 //ドイツの現在の気温を変数 $kion5 として取得 //日本の現在の気温を変数 $kion6 として取得 //ロシアの現在の気温を変数 $kion7 として取得 //ギリシャの現在の気温を変数 $kion8 として取得 //この時点ですでに20秒経過していると思われる 1個づつ取得、表示、flushなら希望の表示方法になりますがソートして順位はつけられませんね。

共感・感謝の気持ちを伝えよう!

質問者からの補足

ご返信ありがとうございます。 配列を使用して順位を付ける場合、flush()関数は適用できないと解釈してよろしいでしょうか?よろしくお願い致します。

関連するQ&A

  • 配列から値を取得する方法。

    配列から野菜の名前を取得して表示する方法を教えてください。 取得したい野菜の名前の番号はひとつずつ改行で区切って テキストファイル(*.txt)に保存しています。 例↓ 22 484 Array ( [0] => Array ( [no] => 22 [name] => とまと ) [1] => Array ( [no] => 1508 [name] => かぼちゃ ) [2] => Array ( [no] => 5482 [name] => せろり ) [3] => Array ( [no] => 1813 [name] => にんじん ) [4] => Array ( [no] => 54118 [name] => ナス ) [5] => Array ( [no] => 484 [name] => レタス ) )

    • ベストアンサー
    • PHP
  • 二桁の数字からなる配列数10個内に00がある場合、

    お世話になります。 二桁の数字からなる配列数10個内に00がある場合、十の位と一の位をそれぞれ取り出すようにテスト中なのですが、配列内に00がある場合、十の位と一の位の数字がコピーされてしまうようです。 #!/usr/bin/perl @Array="10<>78<>51<>78<>00<>72<>43<>82<>65<>29<>"; foreach$i(0..$#Array){ @Mtmp=split(/<>/,$Array[$i]); } foreach$i(0..$#Mtmp){ ($M_old_9,$M_old_8,$M_old_7,$M_old_6,$M_old_5,$M_old_4,$M_old_3,$M_old_2,$M_old_1,$M_old_0)=split(/<>/,$Mtmp[$i]); # if($Mtmp[$i] != ''){ $M_n = substr ("$Mtmp[$i]", -2);#■二桁のの数字 $M_t10=$M_n; $M_t1 = substr ("$M_t10", -1 , 1);#■一の位を取り出し chop$M_t10; #■十の位を取り出し $acount++; # } print "No.$i $Mtmp[$i]\n"; $M_yosou++; $M_old_9=$M_old_8; $M_old_8=$M_old_7; $M_old_7=$M_old_6; $M_old_6=$M_old_5; $M_old_5=$M_old_4; $M_old_4=$M_old_3; $M_old_3=$M_old_2; $M_old_2=$M_old_1; $M_old_1=$M_old_0; $M_old_0=$M_n;#■二桁のの数字 $M_old_n9_10=$M_old_n8_10; $M_old_n8_10=$M_old_n7_10; $M_old_n7_10=$M_old_n6_10; $M_old_n6_10=$M_old_n5_10; $M_old_n5_10=$M_old_n4_10; $M_old_n4_10=$M_old_n3_10; $M_old_n3_10=$M_old_n2_10; $M_old_n2_10=$M_old_n1_10; $M_old_n1_10=$M_old_n0_10; $M_old_n0_10=$M_t10;#■十の位 $M_old_n9_1=$M_old_n8_1; $M_old_n8_1=$M_old_n7_1; $M_old_n7_1=$M_old_n6_1; $M_old_n6_1=$M_old_n5_1; $M_old_n5_1=$M_old_n4_1; $M_old_n4_1=$M_old_n3_1; $M_old_n3_1=$M_old_n2_1; $M_old_n2_1=$M_old_n1_1; $M_old_n1_1=$M_old_n0_1; $M_old_n0_1=$M_t1;#■一の位 } print "\$acount=$acount\n<br>\@Mtmp=@Mtmp \n<br>\$M_n=$M_n \n<br>\$M_t10=$M_t10 \n<br>\$M_t1=$M_t1 \n<br>\$M_old_9=$M_old_9\n<br>\$M_old_8=$M_old_8\n<br>\$M_old_7=$M_old_7\n<br>\$M_old_6=$M_old_6\n<br>\$M_old_5=$M_old_5\n<br>\$M_old_4=$M_old_4\n<br>\$M_old_3=$M_old_3\n<br>\$M_old_2=$M_old_2\n<br>\$M_old_1=$M_old_1\n<br>\$M_old_0=$M_old_0\n<br>\$M_old_n9_10=$M_old_n9_10\n<br>\$M_old_n8_10=$M_old_n8_10\n<br>\$M_old_n7_10=$M_old_n7_10\n<br>\$M_old_n6_10=$M_old_n6_10\n<br>\$M_old_n5_10=$M_old_n5_10\n<br>\$M_old_n4_10=$M_old_n4_10\n<br>\$M_old_n3_10=$M_old_n3_10\n<br>\$M_old_n2_10=$M_old_n2_10\n<br>\$M_old_n1_10=$M_old_n1_10\n<br>\$M_old_n0_10=$M_old_n0_10\n<br>\$M_old_n9_1=$M_old_n9_1\n<br>\$M_old_n8_1=$M_old_n8_1\n<br>\$M_old_n7_1=$M_old_n7_1\n<br>\$M_old_n6_1=$M_old_n6_1\n<br>\$M_old_n5_1=$M_old_n5_1\n<br>\$M_old_n4_1=$M_old_n4_1\n<br>\$M_old_n3_1=$M_old_n3_1\n<br>\$M_old_n2_1=$M_old_n2_1\n<br>\$M_old_n1_1=$M_old_n1_1\n<br>\$M_old_n0_1=$M_old_n0_1\n<br><br>"; __END__; 上記の実行結果は # perl test3.cgi No.0 10 No.1 78 No.2 51 No.3 78 No.4 00 No.5 72 No.6 43 No.7 82 No.8 65 No.9 29 $acount=10 <br>@Mtmp=10 78 51 78 00 72 43 82 65 29 <br>$M_n=29 <br>$M_t10=2 <br>$M_t1=9 <br>$M_old_9= <br>$M_old_8= <br>$M_old_7= <br>$M_old_6= <br>$M_old_5= <br>$M_old_4= <br>$M_old_3= <br>$M_old_2= <br>$M_old_1= <br>$M_old_0=29 <br>$M_old_n9_10=1 <br>$M_old_n8_10=7 <br>$M_old_n7_10=5 <br>$M_old_n6_10=7 <br>$M_old_n5_10=0 <br>$M_old_n4_10=7 <br>$M_old_n3_10=4 <br>$M_old_n2_10=8 <br>$M_old_n1_10=6 <br>$M_old_n0_10=2 <br>$M_old_n9_1=0 <br>$M_old_n8_1=8 <br>$M_old_n7_1=1 <br>$M_old_n6_1=8 <br>$M_old_n5_1=0 <br>$M_old_n4_1=2 <br>$M_old_n3_1=3 <br>$M_old_n2_1=2 <br>$M_old_n1_1=5 <br>$M_old_n0_1=9 <br><br> なのですが、上記の00を取り出した部分がなぜか十の位と一の位どちらもコピーされてしまいます。 これはなぜこのような症状がおきるのでしょうか。また00の際も十の位と一の位それぞれ0を取り出すにはどのようにすれば宜しいでしょうか。 2.下記の $M_old_9= ... $M_old_0= の所が二桁の数字が順次展開されないのは何故なのでしょうか。 お忙しいかとは存じますが、よろしくお願い致します。

    • ベストアンサー
    • Perl
  • PDO/カラム値だけを取得したい(配列ではなく)

    PDOで、配列形式ではなく、変数だけを取得したいのですが、 どうすればいいでしょうか? ・取得結果の配列から値を取り出すのではなく、PDOでの取得段階で変数だけを取得したい ・結果は1件しかないという前提 <例> userテーブルで、指定条件(=email)に合致するnameカラム $sql = "SELECT name FROM user WHERE email = :email"; このとき、  Array ( [name] => 伊藤 ) ではなく、  伊藤 だけを取得したいです

    • ベストアンサー
    • PHP
  • ポインタで…

    (a,b,c):10 20 30 (a,b,c)=(10,20,30) 最大値 : 30 最小値 : 10 ↑のように実行例にしたいのですが関数の部分がわかりません 。 3つの変数のポインタ(n1, n2, n3)と求めたい値を指定する整数rank(最大値を求めるなら1を、最小値なら3を指定する)を引数として指定し、返り値として最大値(最小値)を持つ変数のポインタを返す関数 int * ranking(int *n1, int *n2, int *n3, int rank) を作成し、以下のプログラムを完成させなさい。 #define MAX 1 #define MIN 3 int * ranking(int *n1, int *n2, int *n3, int rank) { /* rankが1なら最大値、3なら最小値を返す */ /* 関数を作成 */ } int main() { int a, b, c, i; printf("(a,b,c):"); scanf("%d %d %d", &a, &b, &c); printf("(a,b,c)=(%d,%d,%d)\n", a, b, c); printf("最大値 : %d\n", *ranking(&a, &b, &c, MAX)); printf("最小値 : %d\n", *ranking(&a, &b, &c, MIN));

  • ソート時同じ値がある場合、表示順をコントロールする事は可能ですか?

    ハッシュの配列を配列の数の多い順に表示する場合で配列の数が同じの場合の最初に表示される配列の数字につきまして この配列の数が同じである場合の表示順序を意図した順番にする事は可能でございますか? この意図した順番と申しますのは、小さい数字を先に表示するのではなく下記の@array2の配列値の並んでいる順や別途配列に0~9の数字を適当に入れておきにそれを参考に評価するという形を希望しており模索中なのですが、まずこの事につきまして可能か不可能かをご教授願いたいのと、もし可能でしたらどうか解決に至る先輩方のお知恵をお借り出来ませんでしょうか よろしくお願い致します。 #!/usr/bin/perl use Tie::IxHash; @array0_n=('a','b','c','d'); @array1_n=('e','f','g'); @array2_n=('h','i'); @array3_n=('j'); @array4_n=(); @array5_n=(); @array6_n=('k'); @array7_n=('l','n'); @array8_n=('m','o','p'); @array9_n=('q','r','s','t'); %array1 = ( '0' => [ (@array0_n) ], '1' => [ (@array1_n) ], '2' => [ (@array2_n) ], '3' => [ (@array3_n) ], '4' => [ (@array4_n) ], '5' => [ (@array5_n) ], '6' => [ (@array6_n) ], '7' => [ (@array7_n) ], '8' => [ (@array8_n) ], '9' => [ (@array9_n) ], ); #配列の数の多い順に並び替え my @array2 =reverse sort { scalar @{$array1{$b}} <=> scalar @{$array1{$a}} or $a <=> $b } keys %array1; @array9_n2=('a2','b2','c2','d2'); @array1_n2=('e2','f2','g2'); @array2_n2=('h2','i2'); @array3_n2=('j2'); @array4_n2=(); @array5_n2=(); @array6_n2=('k2'); @array7_n2=('l2','n2'); @array8_n2=('m2','o2','p2'); @array0_n2=('q2','r2','s2','t2'); tie %TmpList, 'Tie::IxHash'; #@array2を元に更に動的にハッシュ内に配列を作成 foreach(@array2){ my $x="array$_\_n2"; $TmpList{$_}=[(@$x)]; print "$_,$#{$x},@$x<br>\n"; } print "1-end\n"; while ( ( $key , $value ) = each %TmpList ){ print "key:$key value:@$value\n" ; } print "2-end\n"; my @array3 = sort { scalar @{$TmpList{$b}} <=> scalar @{$TmpList{$a}} or $a <=> $b } keys %TmpList; #Tie::IxHashモジュールで表示する際の順番を固定出来るかテスト foreach(@array3){ my $x="array$_\_n2"; $TmpList2{$_}=[(@$x)]; print "$_,$#{$x},@$x<br>\n"; } print "3-end\n"; __END__;

    • ベストアンサー
    • Perl
  • ◆配列をログへ

    いつもお世話になります。 以下のような多重配列を一度ログへ保管し、その後また取り出したいです(DBは使えません)。 配列のままでは保管できないので、変数にし保管、それを取り出して配列に再加工するという方法をとっています。 ( [0] => Array ( [0] => Array ( [name] => 太郎 [age] => 20 [tel] => 123123123 [mail] => tarou.com ) [1] => Array ( [name] => 花子 [age] => 18 [tel] => 3334444555 [mail] => hana.com ) ) ) //上の配列を変数にしてログとして保管 @@太郎++20**123123123^^tarou.com @@花子++18**3334444555^^hana.com //再度ログを取得し元の配列に再加工。 explode関数などで区切り文字(@@や++)を元に考えてみたのですが、 もっとスマートな方法があるのかなと思いまして、投稿してみました。 ログというのは一度テキストファイルとして保管という意味です。

    • ベストアンサー
    • PHP
  • オブジェクトから二次元配列へ指定条件下で変換したい

    下記「元データ」から、やりたいことに基づき、「結果データ」を取得するにはどうすればよいでしょうか? ■元データ(オブジェクト) { "0":["東京","1","n1"], "1":["大阪","2","n2"], "2":["京都","3","n3"], "3":["福岡","4","n4"], "4":["東京","5","n5"], "5":["東京","7","n6"], "6":["大阪","1","n7"] } ■やりたいこと 1.「配列0番目の値」で名寄せ 2.「配列1番目の値」の合計数を、新たな配列1番目に配置 3.「配列1番目の値」の重複カウント数を、新たな配列2番目に配置 ■結果データ(配列) [ ['東京',13,'3'], ['大阪',3,'2'], ['京都',3,'1'], ['福岡',4,'1'] ]; ------------------------------------------------------------------------------ また、元データが配列だった場合、同じ結果を求めるのはどうすれば良いでしょうか? ■元データ [ ['東京',1,'n1'], ['大阪',2,'n2'], ['京都',3,'n3'], ['福岡',4,'n4'] ['東京',5,'n5'] ['東京',7,'n6'] ['大阪',1,'n7'] ];

  • array_multisortがうまくできません

    ある調味料に対応するスコアを設定して、 最もスコアが高い調味料を3つ選別しようと思います。 <?php $name=array("satou","sio" ,"miso","sansyo","wasabi"); $score=array(12,18,13,24,19); $res=array('name'=>$name,'score'=>$score); $output=array_multisort($res['score'],SORT_DESC);// print($output[name][0]); print($output[name][1]); print($output[name][2]); ?> 考えたのですが、なぜうまくいかないのかが分かりません。 どなたか訂正箇所を教えてください。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • テキストファイルにあるシリアライズされた複数の多次元配列データを日付順にソートした後に10レコードずつ表示する方法について

    PHPプログラミング初心者のAJYAMAと申します。 表題にあるようなことが、したいのですが、以下のコードでできなくて困っています。どなたか、良きアドバイスをいただけないでしょうか? <POSTされた値のテキストファイルへの書き込み> $lines=array($recordID,$nickname,$date,$area,$num,$item,$size); //データをシリアル化 $serializedLines=serialize($lines); //テキストファイルに改行を入れ、一行にデータを収納する $serializedLines=$serializedLines."\n"; //txtファイルに書き込み $fp=fopen("report.txt","a"); flock($fp, LOCK_EX); fputs($fp,$serializedLines); fclose($fp); /* <データ(変数)の値> テキストファイルにシリアル化して格納されたデータの状態 array(0 => $recordID  例)array(1) $nickname  例)array(Ajyama) $date 例)array(2008/8/30,2008/9/3,2008/9/4) $area 例)array(東京,大阪,名古屋) $num 例)array(01,02,03) $item 例)array(りんご,バナナ,メロン) $size 例)array(大,中,小) ) */ <テキストファイルからデータを読み込み、HTMLへの展開> <?php //ファイルを開く $handle=fopen(dirname(__FILE__)."/../mod/report.txt","r"); //データを呼び出す while(($serialrow=fgets($handle,1024))!==FALSE){ //シリアライズを解除して変数に格納 $row=unserialize($serialrow); //展開したデータを配列に格納(ソートするため) $data[]=array($recordID,$nickname,$date,$area,$num,$item,$size) } fclose($handle); //変数の展開 foreach($data as $key=>$row){ //ソート array_multisort($d,SORT_DESC,SORT_NUMERIC,$num,SORT_DESC,SORT_NUMERIC,$data); //レコード数毎にページを制御 $Cid=$_GET['cid']; $Size=sizeof($data); $P=$_GET["p"]; if($P>0){ $Prev=$P-1; $PrevPage="<a href=".$_SERVER['PHP_SELF']."?p={$Prev}&&cid={$Cid}>前の10件</a>"; } if($Size/10-1>$P){ $Next=$P+1; $NextPage="<a href=".$_SERVER['PHP_SELF']."?p={$Next}&&cid={$Cid}>次の10件</a>"; } if($P==0&&$Size/10<=1){ $NextPage=""; } ?> <h2><?php echo $CatTitle?></h2><BR> 全 <?=$Size?>件 | <?=$PrevPage?> <?=$NextPage?> <?=$NumP?> //配列変数の展開 <?php for($i=$P*10;$i<$P*10+10;$i++){ for($j=0;$j<$no;$j++){ echo <<<EOF <table > <tr> <td>{$recordID[$i]}</td> <td>{$nickname[$i]}</td> <td>{$date[$i][$j]} {$area[$i][$j]} {$num[$i][$j] {$item[$i][$j]} {size[$i][$j]}</td> </tr> </table> EOF; } } ?>

    • 締切済み
    • PHP
  • 多次元配列で特定キーが重複している箇所をランダムで

    PHP多次元配列で特定キーが重複している箇所をランダムで1つだけ表示したい ・id基準 ■元配列 Array (   [0] => Array     (       [id] => 5       [name] => "佐藤"       [age] => 5     )   [1] => Array     (       [id] => 5       [name] => "伊藤"       [age] => 7     )   [2] => Array     (       [id] => 5       [name] => "鈴木"       [age] => 12     )   [3] => Array     (       [id] => 8       [name] => "山田"       [age] => 17     )   [4] => Array     (       [id] => 8       [name] => "奈良"       [age] => 2     ) ■取得したいランダム結果配列例1 Array (   [0] => Array     (       [id] => 5       [name] => "佐藤"       [age] => 5     )   [3] => Array     (       [id] => 8       [name] => "山田"       [age] => 17     ) ■取得したいランダム結果配列例2 Array (   [1] => Array     (       [id] => 5       [name] => "伊藤"       [age] => 7     )   [4] => Array     (       [id] => 8       [name] => "奈良"       [age] => 2     ) ※1次元目のキーは元キーを維持していなくても構いません

    • ベストアンサー
    • PHP