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. 我认为内部数组指针被移动到 $result 的末尾,因为我只得到以字母 A 开头的动物被推到数组 $A 上。所有其他数组($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);(Variable variables) 但不建议使用 - 您应该使用嵌套数组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 回答