0

可以说我有一个像这样的数组:

Array
(
[1] => Array
    (
        [name] => 85 x 55mm
        [options] => Array
            (
                [2] => Array
                    (
                        [2] => Ivory Board
                        [3] => Silk Board
                    )

                [6] => Array
                    (
                        [4] => 330gsm
                        [5] => 400gsm
                    )

            )

    )
)

内部选项可以有 x 个值。在这个例子中,我想要一个选择列表,它将从根父键(可能超过 1 个父键,但在这种情况下只有 1 个)和不包括父名称的值链接选项 id,即

<h1>85 x 55mm</h1>
<select name="1">
<option value="1,2,4">Ivory Board, 330gsm</option>
<option value="1,3,5">Silk Board, 400gsm</option>
</select>

尝试重新键入阵列,但难以组合。

4

2 回答 2

0

我有一组来自 iTunes 的复杂曲目信息,其中我想要循环的关键值称为“曲目”。与每条轨道相关的属性数量各不相同。

为了循环遍历数组,我使用了一个 foreach 循环。

$trackArray = (array_keys)$plist['Tracks']));

这设置了我感兴趣的密钥。然后我使用这个循环。

    foreach ($trackArray as $value){
$trackID = ($plist['Tracks'][$value]['TrackID');
$artist = ($plist['Tracks'][$value]['artist']);
}

我花了很多时间才找到正确的解决方案,我发现 var_dump() 和 print_r() 函数非常宝贵。

我认为稍微玩一下,你就可以使用我上面使用的东西得到你想要的东西。

让我知道你是怎么办的。如果你仍然卡住,如果我可以有更多的代码,也许我可以敲一些东西。

小号

于 2013-07-22T14:32:06.940 回答
0

以下将重组您的数组,将选项特征分组在一起:

$arr = array (
    1 => array (
            'name' => '85 x 55mm',
            'options' => array (
                    2 => array (
                            2 => 'Ivory Board',
                            3 => 'Silk Board'),
                    6 => array (
                            4 => '330gsm',
                            5 => '400gsm'))));
$out = array();
foreach ($arr as $key => $value){
    $out[$key]['name'] = $value['name'];
    $ops = $value['options'];
    array_unshift($ops, null);
    $ops = call_user_func_array('array_map', $ops);
    $out[$key]['options'] = $ops;
}

输出:

Array(
    [1] => Array(
            [name] => 85 x 55mm
            [options] => Array(
                    [0] => Array(
                            [0] => Ivory Board
                            [1] => 330gsm
                        )
                    [1] => Array(
                            [0] => Silk Board
                            [1] => 400gsm
                        )
                )
        )
)

以下为数组中的每个项目创建选择菜单(在您的示例中,只有一个项目):

$select = '';
foreach ($out as $key => $value){
    $select .= "<h1>".$value['name']."</h1>\n";
    $select .= "<select name='".$key."'>\n";
    foreach ($out[1]['options'] as $key2 => $value2){
        $select .= "<option value=''>".implode(', ', $value2)."</option>\n";
    }
    $select .= "</select>\n";
}

输出:

<select name='1'>
<h1>85 x 55mm</h1>
<option value=''>Ivory Board, 330gsm</option>
<option value=''>Silk Board, 400gsm</option>
</select>

我无法弄清楚选项标签中的值来自哪里,所以我不得不将该部分留空。

于 2013-07-22T17:10:22.693 回答