- ベストアンサー
多次元配列の意味がわかりません。プログラミング初心者です。
- $n, $i, $jという変数を使った多次元配列の処理について理解できていません。具体的には、$nがデータの件数を示しているのか、$iと$jがどのような処理をしているのかわかりません。
- 具体的な処理について解説します。まず、$nはデータの件数を表しています。$iは行数を、$jは列数を表しています。この処理では、データが格納された多次元配列を逆順に読み込む処理を行っています。
- 具体的なforループ処理としては、最初のforループでは$iが0から$n-1まで1ずつ増えていきます。2番目のforループでは、$jが$n-1から$iまで1ずつ減っていきます。このような処理を行うことで、多次元配列の要素を逆順に読み込むことができます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず、$n の値が 5だった場合 $i=0,$j=4 で ifの条件処理 $i=0,$j=3 で ifの条件処理 $i=0,$j=2 で ifの条件処理 $i=0,$j=1 で ifの条件処理 $i=1,$j=4 で ifの条件処理 $i=1,$j=3 で ifの条件処理 $i=1,$j=2 で ifの条件処理 $i=2,$j=4 で ifの条件処理 $i=2,$j=3 で ifの条件処理 $i=3,$j=4 で ifの条件処理 という動きになります 絵にするとこんな感じ $i の動きが * $j の動きが @ [*][_][_][_][@] $i=0,$j=4 [*][_][_][@][_] $i=0,$j=3 [*][_][@][_][_] $i=0,$j=2 [*][@][_][_][_] $i=0,$j=1 [_][*][_][_][@] $i=1,$j=4 [_][*][_][@][_] $i=1,$j=3 [_][*][@][_][_] $i=1,$j=2 [_][_][*][_][@] $i=2,$j=4 [_][_][*][@][_] $i=2,$j=3 [_][_][_][*][@] $i=3,$j=4
その他の回答 (2)
- kmee
- ベストアンサー率55% (1857/3366)
> ・$nはデータの件数でしょうか? count($entry_count) の結果です。 http://php.net/manual/ja/function.count.php $entry_countがなんなのかによって答えが違います > ・$jがもし列数と考えれば、なぜ初期値が$jの値がマイナス1なのか。 > ・$jをなぜ1つずつ減らしていくのでしょうか? $nに適当な値を入れて、そのループがどんな$i,$jの組合せになるか、考えてみてはどうです? $i=0の回 →$j=4;$j>0 →→(0,4)(0,3)(0,2)(0,1) $i=1の回 →$j=4;$j>1 →→(1,4)(1,3)(1,2) ..... $n-1でなく$nだったらどうなるか、$jが「前(=小さい方)から」になっているか、わかると思います。 おそらく、これは、1次元配列を利用した、重複チェックとか、並び換え(バブルソートか挿入ソートかそのあたり)とかのプログラムです。 $iと$jは、比較に使う組み合わせ($entry_count[$j]と$entry_count[$i])を示しているだけでしょう。 行と列を使うようなら$entry_count[$j][$i]などと使うはずですが、おそらく、そんな使い方はしてないのでは?
- yambejp
- ベストアンサー率51% (3827/7415)
見る限り多次元配列の処理ではないかと <?PHP $entry_count=array("a","b","c","d"); $n = count($entry_count); for($i=0;$i<$n;$i++){ for($j=$n-1;$j>$i;$j--){ print $entry_count[$i]."-".$entry_count[$j]."<br>\n"; } } ?> ようは配列内の要素を重なりなく比較する処理かなと
お礼
ありがとうございました。 >配列内の要素を重なりなく比較する処理 という記述からバブルソートという言葉が検索で引っかかりました。 内容を見るとそれではないかと分かりました。
お礼
分かりやすく教えていただきありがとうございまいsた。 明確になりました。