1

$result には、データベース クエリからのデータ項目の配列が含まれます。

$A は空の配列です。$B などと呼ばれる空の配列も作成しました。

アルファベットの 26 文字すべてをループしたい。文字ごとに、データベース クエリの結果を含む配列をループして、それぞれの配列にプッシュします。したがって、'Ant' と 'Antelope' は配列 $A にプッシュされ、'Buffalo' は配列 $B にプッシュされます。

これが私の問題PHPです:

$letter = 'A';
  for($count = 1; $count <= 26; ++$count) {
    foreach ($result as $topic) {
      if (substr($topic->animal, 0, 1) == $letter //the first letter is A, B...
        array_push($A, $topic->animal);
      }
    }
  }
  $letter++;
}
  1. 文字 A で始まる動物のみが配列 $A にプッシュされるため、内部配列ポインターは $result の最後に移動していると思います。他のすべての配列 ($B、$C など) は空です。いずれにせよ、一度だけ機能します (文字 A の場合)。reset($result) が機能していないようです。$result を複数回 (26 回) ループするにはどうすればよいですか?

  2. 文字をループするときにプッシュされる配列を変更するにはどうすればよいですか? つまり、$letter が BI want にインクリメントされた場合: array_push($B, $topic->animal);

前もって感謝します。

4

1 に答える 1

4
  1. あなたは常ににプッシュしてAいるので、他のアレイに影響を与えないことは理にかなっています。
  2. (変数変数)を使用できますarray_push($$letter,$topic->animal);が、お勧めしません-ネストされた配列を使用する必要がありますarray_push($letters[$letter],$topic->animal)

そうは言っても、これを試してください:

$letters = Array();
foreach($result as $topic) {
    $letters[substr($topic->animal,0,1)][] = $topic->animal;
}
于 2013-02-15T18:26:57.493 に答える