Array将以前的值重新分配到未设置的位置PHP

时间:2013-10-31 17:05:15

标签: php arrays

我正在尝试在运行时创建一个多维数组,用于查询和存储多个MySQL结果。例如,让我们说我们有一个像这样的表(是虚构的,所以请不要选择这个例子):

**store--tag--color--size**
1--101--blue--s
2--102--red--s
2--103--yellow -- m
3--104--blue--m

需要创建一个多维数组,用于存储每个商店的所有产品。我想要的结果是:

$storeArray = array[[[101],[blue],[s]],[[102,103],[red,yellow],[s,m]],[[104],[blue],[m]]];

这是我的代码:

$counter = 0;
foreach($storeIDs as $item){
   $result = mysql_query('select whatever');
   $rows = mysql_num_rows($result);
   for($i=0;$i<$rows;$i++){
      $tag[$i]       = mysql_result(); 
      $color[$i]     = mysql_result(); 
      $size[$i] = mysql_result(); 
  }
$tempArray = array($tag,$,$color,$size);
$storeArray[$counter] = $tempArray;
unset($tempArray);
$counter++;
}

问题是,即使我已经取消设置$ tempArray,第三个应该捕获的循环

  

[[104],[蓝色],[M]]

实际存储

  

[[104103],[蓝色,黄色],[M,M]]。

我已经尝试将$ tempArray设置为array()或array(array())。来自第二个循环的数据总是会溢出到任何未来的小尺寸迭代中。

如何让$ storeArray看起来像上面的目标?

谢谢

1 个答案:

答案 0 :(得分:1)

你没有设置$ tmpArray,但看起来你可能还需要取消设置$ tag,$ color和$ size。有更好的方法,数据结构略有不同,但是,你试过这个吗?

unset($tempArray,$tag,$color,$size);

实际上,您可以在包含两个项目的循环中设置$ tag [0]和$ tag [1]。然后,对于有一个项目的循环,您更新$ tag [0],但$ tag [1]仍然设置。