如何在数组中获取数据库值?

时间:2016-11-02 11:44:00

标签: php arrays select while-loop

关于下一件事,我有点空白。我恐怕不是应该接近这个问题。我有一个多维数组来显示自定义cms中的编辑器。它看起来像这样:

$options = array(
array("template","Design skelet","Selecteer het gewenste design","text","false",array("front","content","subcontent","action","special","system"),"true"),
array("is_menu","Menu item","Selecteer de gewenste plaats in het menu","select","false",$catch_menu_sec['alias'],"true"),
array("category","Pagina categorie","Voeg hier de pagina naam in","text","false","","true"),
);

$options的存储方式如下:

$option[0] =数据库值。

$option[1] = cms中前端的可读值。

$option[2] = cms用户的说明。

$option[3] =编辑类型(textarea,text或select)

$option[4] =如果编辑器有特殊选项。

$option[5] = **问题出在哪里。以下是为select输入选项存储的值。

$option[6] =如果字段显示在cms中。

现在我遇到了$option[5]的问题。我想检索数据库值,以便我可以获得数据库中每个菜单项的下拉列表。 $option[5]用于创建secundair菜单甚至是tertaire,您可以在其中选择应该是其子项的菜单项。

我希望它的html输出是这样的:

<select name="is_menu">
    <option name="true">True</option>  <- basic option to set it in primair menu, coming from the array
    <option name="false">False</option>  <- basic option, coming from the array
    <option name="home">Home</option>  <- database value, coming from the array
</select>

我知道我不能在数组中放置while或foreach循环,但是我怎么能解决这个问题呢?

提前致谢!

PS:我在这方面有基本的PHP知识,所以请不要苛刻我的错误解释:)

1 个答案:

答案 0 :(得分:1)

编辑要在数据库记录中获取子数组,请使用左连接和GROUP_CONCAT(),或者执行两个查询,一个查询到主表,然后一个到您的相关表格(使用WHERE中第一个结果中的ID)添加到第一个集合。如果使用unique / primary键作为索引构造结果数组,那么很多就更容易了。然后,您可以使用array_keys()进行第二次查询,并在添加相关记录时能够通过id来解决第一个结果中的行。

<小时/> 不要使用'幻数',使$options中的每个数组成为一个关联数组,如下所示:

$options = [
    [
        'db_val' => 'template',
        'label' => 'Design skelet',
        ...
    ],
    ...
];

然后你可以迭代你的数组:

foreach ($options as $option) {
    ...
    echo '<select name="', $option['db_val'], '">';
    foreach ($option['select_opts'] as $select_opt => $label) {
        echo '<option value="', $select_opt, '">', $label, '</option>';
    }
    echo '</select>';
    ...
}