我正在创建一个电子商务网站,该网站的产品具有多个属性(大小,颜色等)。因此,每个属性还具有多个值(对于大小而言,它们是:小,中,大等)。 )
我有一个ID数组,表示属性,如下所示:
$attributes = [1,2,3];
然后,我想在数据库中查询每个ID,以获取该属性的值,并创建结果的多维数组,如下所示:
array (size=3)
1 => size
0 => 'small'
1 => 'medium'
2 => 'large'
2 => colour
0 => 'red'
1 => 'green'
2 => 'blue'
3 => pattern
0 => 'spots'
1 => 'stripes'
2 => 'plain'
到目前为止,我的情况是这样的:
$attribute_array = [];
foreach($attributes as $attribute_id){
$params = [$attribute_id];
$sql = "SELECT * FROM attributes WHERE attribute_id=?";
$stmt = DB::run($sql,$params);
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$attribute_value = $row['attribute_value'];
//$attribute_array[$attribute_id] = $attribute_value; // this only takes the last value from the last row
//array_push($attribute_array[$attribute_id],$attribute_value); // this says that the first arg isn't an array
}
}
任何帮助或建议,将不胜感激。
我最终要实现的是获得产品的每种属性组合(小号+红色+条纹,小号+绿色+条纹,小号+蓝色+条纹等)。
答案 0 :(得分:1)
你快到了...
$attribute_array[$attribute_id][] = $attribute_value;
请注意[]
,它将值添加到已经存在的值列表中-如果没有它,它将覆盖先前的值。
答案 1 :(得分:0)
set /?
这样做将返回属性数组,并存储在0索引的关联数组中。
$attribute_array = [];
foreach($attributes as $attribute_id){
$params = [$attribute_id];
$sql = "SELECT size,colour,pattern,etc FROM attributes WHERE attribute_id=?";
$stmt = DB::run($sql,$params);
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
// $attribute_value = $row['attribute_value'];
$attribute_array[] = $row;
}
}
示例: $ size = $ attribute_array [0] ['size']