我有以下数组结构:
Array ( [0] => Array ( [product_option_id] => 236 [option_id] => 14 [name] => Masura S [type] => select [option_value] => Array ( [0] => Array ( [product_option_value_id] => 33 [option_value_id] => 53 [name] => Alb [price] => [price_prefix] => + ) [1] => Array ( [product_option_value_id] => 35 [option_value_id] => 55 [name] => Rosu [price] => [price_prefix] => + ) ) [required] => 0 ) [1] => Array ( [product_option_id] => 237 [option_id] => 15 [name] => Masura M [type] => select [option_value] => Array ( [0] => Array ( [product_option_value_id] => 34 [option_value_id] => 58 [name] => Rosu [price] => [price_prefix] => + ) ) [required] => 0 ) )
我发现自己在尝试显示此数组中的所有[name]值时迷失了方法。
我要做的是根据第一级[name]
(如[name] => Masura S
)填充下拉选择表单,然后使用第二级[name]
填充第二个下拉列表选项(如[name] => Alb
)。
如果你有任何指示,我将不胜感激......
答案 0 :(得分:6)
你可以用这种方式填充第一个选择:
<select>
<?php $c=count($array);
for ( $i=0; $i < $c; $i++)
{ ?>
<option><?php echo $array[$i]['name'];?></option>
<?php } ?>
</select>
第二次选择:
<select>
<?php
for ( $i=0; $i < $c; $i++)
{
$c2=count($array[$i]);
for ($j=0;$j<$c2;$j++){
?>
<option><?php echo $array[$i][$j]['name'];?></option>
<?php }} ?>
</select>
答案 1 :(得分:5)
试试这个:
$name = array_column($array, 'name');
答案 2 :(得分:4)
我将名称分隔成这样的单独数组,之后根据需要填充下拉列表应该很容易:
$product_names = $option_names = array();
foreach ($products as $index => $product) {
$product_names[$index] = $product['name'];
foreach ($product['option_value'] as $option) {
$option_names[$index][] = $option['name'];
}
}
当您想要数组索引0的产品名称时,您将使用$ product_names [0](字符串),并且可以从$ option_names [0](数组)中找到该产品的选项名称。
上面的代码并不关心现有ID,因此如果您需要表单,则需要再扩展代码。
答案 3 :(得分:2)
您需要使用递归函数
这是一个例子
function recursion($array) {
foreach ($array as $key => $value) {
echo $value;
if (is_array($value))
$this->recursion($value);
}
}
recursion($array);