我有一个foreach循环,它遍历一个项目列表。对于这些项目中的每一项,我都有一个while循环,用于从数据库中获取数据。
$output = array();
//$reference is a multidimentional array has been passed to this page
where the element `color` contains the color I want.
foreach ($reference as $c) {
$color = $c['color'];
$query = "SELECT DISTINCT name FROM $table where colorPreference = $color";
$exquery = mysqli_query($con, $customerQuery);
while ($row = mysqli_fetch_array($exquery)) {
$person = $row['person'];
array_push($output[$color], $person);
}
}
所以这会循环,第一次搜索“红色”,然后在假表中找到5个喜欢红色的人。接下来,' blue',找到1个人,然后是' green'在哪里找到3。
如果我查看单个结果,我的第一个阵列有红色,蓝色,绿色和#34;我的第二个数组有这些名称列表....我只是不知道如何将它们一起添加到数组中。
我试图像这样构建一个数组:
Array
(
[Red] => Array
(
[0] => John
[1] => Sally
[2] => Bob
...
)
[Blue] => Array
(
[0] => Luke
)
[Green] => Array
(
..etc...
)
我没有正确使用array_push
- 我收到Warning: Illegal offset type
错误。我做错了什么?
答案 0 :(得分:2)
自从我使用PHP以来已经有一段时间了,但我认为你需要初始化每个"颜色"您将要推进的阵列。所以......
$output = array();
//$reference is a multidimentional array has been passed to this page
where the element `color` contains the color I want.
foreach ($reference as $c) {
$color = $c['color'];
$query = "SELECT DISTINCT name FROM $table where colorPreference = $color";
$exquery = mysqli_query($con, $customerQuery);
while ($row = mysqli_fetch_array($exquery)) {
$person = $row['person'];
if (!array_key_exists($color, $output)) {
$output[$color] = array();
}
array_push($output[$color], $person);
}
}
答案 1 :(得分:0)
尝试更改:
array_push($output[$color], $person);
分为:
$output[$color][] = $person;
来自array_push上的手册:
注意:如果使用array_push()向数组中添加一个元素,最好使用$ array [] =因为这样就没有调用函数的开销。
注意:如果第一个参数不是数组,array_push()将发出警告。这与创建新数组的$ var []行为不同。