我正在尝试在运行时创建一个多维数组,用于查询和存储多个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],[蓝色],[米]]
实际商店
[[104,103],[蓝色,黄色],[米,米]]。
我尝试将$tempArray设置为数组()或数组(数组())。来自第二个循环的数据总是溢出到任何较小大小的未来迭代中。
如何让$storeArray看起来像上面的目标?
谢谢
您正在取消设置$tmpArray,但看起来您可能还需要取消设置$tag、$color和$size。 有更好的方法,但数据结构略有不同,但照原样,你试过吗?
unset($tempArray,$tag,$color,$size);
实际上,您可以在包含两个项目的循环中设置 $tag[0] 和 $tag[1]。 然后,对于具有一个项目的循环,您更新$tag[0],但$tag[1]保持设置状态。