使用PHP foreach的多个循环?
$ result包含来自数据库查询的数据项的数组。使用PHP foreach的多个循环?
$ 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++;
}
我认为内部数组指针被移动到$结束的结果,因为我只得到字母开头的动物被推到数组$ A 。所有其他数组($ B,$ C等)都是空的。无论如何它只能工作一次(对于字母A)。重置($结果)似乎不工作。我如何循环$ result多次(26)次?
如何在通过字母循环时更改要推入的数组?换句话说,当$字母增加到B我想要:array_push($ B,$ topic-> animal);
在此先感谢。
- 你一直在推进
A
,所以它是有道理的,它不会影响任何其他阵列。 - 您可以使用
array_push($$letter,$topic->animal);
(可变变量),但它不建议 - 你应该使用一个嵌套的数组insted的与array_push($letters[$letter],$topic->animal)
这就是说,试试这个:
$letters = Array();
foreach($result as $topic) {
$letters[substr($topic->animal,0,1)][] = $topic->animal;
}
好评!但是你应该输入array()lowercased。 – 2013-02-15 18:29:28
@kolink击败了我,这是我的:http://codepad.org/vceT9K2t – mkaatman 2013-02-15 18:34:49
@BramGerritsen如果它是我自己的代码,它会是'$ letters = [];'而不是,但它不是那么好。或者一些XD – 2013-02-15 18:42:14
不能增加'$这样的信' – 2013-02-15 18:26:09
@BrendanBullen是的,你可以。 – 2013-02-15 18:27:07
@Kolink啊是的!确实可以。那么,你每天都会学到新的东西。 – 2013-02-15 18:31:46