将值添加到多维数组中

我有一个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个喜欢红色的人。 接下来,'蓝色',它找到1个人,然后'绿色'找到3个。

如果我看单独的结果,我的第一个数组有“红色,蓝色,绿色”,我的第二个数组有这些名单的名单....我只是不知道如何将它们添加到一个数组中。

我试图建立一个这样的数组:

Array
(
  [Red] => Array
      (
          [0] => John
          [1] => Sally
          [2] => Bob
          ...
      )

  [Blue] => Array
      (
          [0] => Luke
      )
  [Green] => Array
      (
          ..etc...       
      )

我虽然没有正确使用array_push - 我得到一个Warning: Illegal offset type错误。 我究竟做错了什么?


从使用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);

  }                
}

尝试改变:

array_push($output[$color], $person);

成:

$output[$color][] = $person;

从array_push上的手册:

注意:如果使用array_push()将一个元素添加到数组中,最好使用$ array [] =,因为这样就不会有调用函数的开销。

注意:如果第一个参数不是数组,array_push()会引发警告。 这与创建新数组的$ var []行为不同。

链接地址: http://www.djcxy.com/p/47811.html

上一篇: add values into multidimentional array

下一篇: Foreach loop depending on files in directory