多维数组 - 如何从子数组中获取特定值

ReP*_*Pho 6 php multidimensional-array

我有以下数组结构:

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)选择第二个下拉选择.

如果您有任何指示,我将不胜感激......

小智 6

你可以用这种方式填充第一个选择:

<select>

    <?php $c=count($array);
    for ( $i=0; $i < $c; $i++)
    { ?>
        <option><?php echo $array[$i]['name'];?></option>
    <?php } ?>   

</select>
Run Code Online (Sandbox Code Playgroud)

第二选:

<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>
Run Code Online (Sandbox Code Playgroud)


Usm*_*med 6

尝试这个:

$name = array_column($array, 'name');
Run Code Online (Sandbox Code Playgroud)


gee*_*ity 5

我会像这样将名称分开以分隔数组,之后应该很容易根据需要填充下拉列表:

$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'];
    }
}
Run Code Online (Sandbox Code Playgroud)

当您想要数组索引 0 的产品名称时,您可以使用 $product_names[0](一个字符串)并且可以从 $option_names[0](一个数组)中找到该产品的选项名称。

上面的代码不关心现有的 ID,所以如果你需要它们用于表单,你需要更多地扩展代码。