簡體   English   中英

php | 將數組轉換為選擇框

[英]php | Convert array to select box

我有一個數組,想將其轉換為選擇框。 您可以在下面找到我的解決方案。 但是我的lats選項輸出html布局有問題。 我的問題在哪里,我該如何解決?

我的代碼:

if (isset($product->options) && count($product->options)) {

            $option_name = '';   
            foreach ($product->options as $option) {        
                if (trim($option_name) != trim($option->name)) {
                    echo '<select class="width-100" name="product[option][name]['.$option->name.']">';
                }   
                echo '<option value="'.$option->value.'">'.$option->value.'</option>';

                if (trim($option_name) != trim($option->name)) {
                    echo '</select>';
                }

                $option_name = $option->name;       
            }
        } 

我的輸出看起來像:

<select class="width-100" name="product[option][name][Color]">
   <option value="Black">Black</option>
</select>
<select class="width-100" name="product[option][name][Size]">
   <option value="XL">XL</option>
</select>
<option value="X">X</option>

我的數組:

 [options] => Array
        (
            [0] => stdClass Object
                (
                    [name] => Color
                    [value] => Black
                    [price] => +50
                    [order] => 
                )

            [1] => stdClass Object
                (
                    [name] => Size
                    [value] => XL
                    [price] => +10
                    [order] => 
                )

            [2] => stdClass Object
                (
                    [name] => Size
                    [value] => X
                    [price] => +5
                    [order] => 
                )

        )

嘗試這個:

if (isset($product->options) && count($product->options)) {
    $arr = [];

    foreach ($product->options as $option) {
        $arr[$option->name][] = '<option value="'.$option->value.'">'.$option->value.'</option>';
    }

    foreach ($arr as $k=>$v) {
        echo '<select class="width-100" name="product[option][name]['.$k.']">';
        echo join("\n", $v);
        echo '</select>';
    }
}

請嘗試這個

   if (isset($product->options) && count($product->options)) {

        $option_name = '';   
        $i = 0;
        foreach ($product->options as $option) {        
            if (trim($option_name) != trim($option->name)) {
                echo '<select class="width-100" name="'.$option->name.'">';
            }   
            echo '<option value="'.$option->value.'">'.$option->value.'</option>';

            if (trim($option_name) != trim($option->name)) {
                echo '</select>';
            }

            $option_name = $option->name;       
            $i++; 
        }
    } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM