PHP根据数组的值创建optgroups

时间:2016-11-24 13:07:58

标签: php arrays

我有一个包含24个值的数组我要创建4个<optgroup></optgroup>,表示每个<optgroup></optgroup>在选择框中包含6个值,使用PHP foreach循环

我想来自

1 Col/1 row(lg)12 Col/1 row(lg)选项组标签为“大型设备”

1 Col/1 row(md)12 Col/1 row(md)选项组lable nam是“中型设备”

1 Col/1 row(sm)12 Col/1 row(sm)选项组lable nam是“小型设备”

1 Col/1 row(xs)12 Col/1 row(xs)选项组lable nam是'超小设备'

$YPE_grid = array( '1 Col/1 row(lg)' => 12.1, '2 Col/1 row(lg)' => 6.2, '3 Col/1 row(lg)' => 4.3, '4 Col/1 row(lg)' => 3.4, '6 Col/1 row(lg)' => 2.5, '12 Col/1 row(lg)' => 1.6 , '1 Col/1 row(md)' => 12.7, '2 Col/1 row(md)' => 6.8, '3 Col/1 row(md)' => 4.9, '4 Col/1 row(md)' => 3.10, '6 Col/1 row(md)' => 2.11, '12 Col/1 row(md)' => 1.12, '1 Col/1 row(sm)' => 12.13, '2 Col/1 row(sm)' => 6.14, '3 Col/1 row(sm)' => 4.15, '4 Col/1 row(sm)' => 3.16, '6 Col/1 row(sm)' => 2.17, '12 Col/1 row(sm)' => 1.18, '1 Col/1 row(xs)' => 12.19, '2 Col/1 row(xs)' => 6.21, '3 Col/1 row(xs)' => 4.22, '4 Col/1 row(xs)' => 3.23, '6 Col/1 row(xs)' => 2.24, '12 Col/1 row(xs)' => 1.25 );

1 个答案:

答案 0 :(得分:1)

根据您给出的示例,我根据您的关键字划分选项组,首先我使用strpos获取这些位置:lg,md,sm和xs,然后我创建了基于的选项组的名称你的榜样。在我创建新数组并将其中的每个值分组到指定的组之后,我开始迭代选项组并选择。检查一下:

$YPE_grid = array( '1 Col/1 row(lg)' => 12.1, '2 Col/1 row(lg)' => 6.2, '3 Col/1 row(lg)' => 4.3, '4 Col/1 row(lg)' => 3.4, '6 Col/1 row(lg)' => 2.5, '12 Col/1 row(lg)' => 1.6 , '1 Col/1 row(md)' => 12.7, '2 Col/1 row(md)' => 6.8, '3 Col/1 row(md)' => 4.9, '4 Col/1 row(md)' => 3.10, '6 Col/1 row(md)' => 2.11, '12 Col/1 row(md)' => 1.12, '1 Col/1 row(sm)' => 12.13, '2 Col/1 row(sm)' => 6.14, '3 Col/1 row(sm)' => 4.15, '4 Col/1 row(sm)' => 3.16, '6 Col/1 row(sm)' => 2.17, '12 Col/1 row(sm)' => 1.18, '1 Col/1 row(xs)' => 12.19, '2 Col/1 row(xs)' => 6.21, '3 Col/1 row(xs)' => 4.22, '4 Col/1 row(xs)' => 3.23, '6 Col/1 row(xs)' => 2.24, '12 Col/1 row(xs)' => 1.25 );

    $newArray = array();
    foreach($YPE_grid as $key => $value) {
        if(strpos($key,"lg") > 0) {
            $newArray['"Large Devices"'][$key] = $value;
        } else if(strpos($key,"md") > 0) {
            $newArray['"Medium devices"'][$key] = $value;
        } else if(strpos($key,"sm") > 0) {
            $newArray['"Small devices"'][$key] = $value;
        } else if(strpos($key,"xs") > 0) {
            $newArray['"Extra small devices"'][$key] = $value;
        }
     }

$select = "";
$select .= "<select>";
foreach($newArray as $key => $value) {
    $select .= "<optgroup label=" . $key . ">";
        if(is_array($value)) {
            foreach($value as $key2 => $value2) {
                $select .= "<option value='" . $key2 . "'>" . $key2 . "(" . $value2 . ")</option>";
            }
        }
    $select .= "</optgroup>";
}

$select .= "</select>";
echo $select;