Я хотел бы создать динамическое раскрывающееся меню для продуктов в моем интернет-магазине, но у меня есть некоторые проблемы с циклическими данными. Я хочу скопировать данные с PHP. Мой вывод - это массив данных, и он выглядит так:
array (size=6)
0 =>
object(stdClass)[34]
public 'id_attribute_option' => string '8' (length=1)
public 'option_name' => string 'Black' (length=5)
public 'name' => string 'Color' (length=5)
public 'id_attribute' => string '2' (length=1)
1 =>
object(stdClass)[35]
public 'id_attribute_option' => string '10' (length=2)
public 'option_name' => string 'Green' (length=6)
public 'name' => string 'Color' (length=5)
public 'id_attribute' => string '2' (length=1)
2 =>
object(stdClass)[36]
public 'id_attribute_option' => string '84' (length=2)
public 'option_name' => string 'S' (length=1)
public 'name' => string 'Size' (length=8)
public 'id_attribute' => string '9' (length=1)
3 =>
object(stdClass)[37]
public 'id_attribute_option' => string '85' (length=2)
public 'option_name' => string 'M' (length=1)
public 'name' => string 'Size' (length=8)
public 'id_attribute' => string '9' (length=1)
4 =>
object(stdClass)[38]
public 'id_attribute_option' => string '86' (length=2)
public 'option_name' => string 'L' (length=1)
public 'name' => string 'Size' (length=8)
public 'id_attribute' => string '9' (length=1)
5 =>
object(stdClass)[39]
public 'id_attribute_option' => string '87' (length=2)
public 'option_name' => string 'XL' (length=2)
public 'name' => string 'Size' (length=8)
public 'id_attribute' => string '9' (length=1)
И желаемый эффект должен быть таким.
Color:<select>
<option value="8">Black</option>
<option value="10">Green</option>
</select>
Size:<select>
<option value="84">S</option>
<option value="85">M</option>
<option value="86">L</option>
<option value="87">XL</option>
</select>
Может ли мне помочь?
Прежде всего, вы можете отделить их, используя этот код (DEMO)
$colors = $sizes = array();
array_map(function($item) use(&$colors, &$sizes){
if($item->name == 'Color') $colors[] = $item;
if($item->name == 'Size') $sizes[] = $item;
}, $array);
Затем используйте две разные циклы foreach
, одну для colors
и одну для size
например
// BUild the Color select
echo "<select id='color'>";
foreach($colors as $color){
echo "<option value='$color->id_attribute_option'>$color->option_name</option>";
}
echo "</select>";
// Build the Size select
echo "<select id='size'>";
foreach($sizes as $size){
echo "<option value='$size->id_attribute_option'>$size->option_name</option>";
}
echo "</select>";
foreach($yourArray as $item)
{
// you are dealing with objects so $item->option_name for example
// this should be easy :p
// there no perfect way to do most things
// so that bottom link you pasted in the comments isn't
// going to teach you anything but how to copy others
}
foreach
. что ты уже испробовал?