循环键值对

时间:2017-05-09 00:11:32

标签: php arrays while-loop

好的,所以我有一个while循环,我正在尝试用它制作一个数组但是我的数组没有正确出现。

我的循环看起来像这样:

while ($rows = mysqli_fetch_assoc($headerresults)){
    $arr[$rows['COLUMN_NAME']] = array("Comments" => array($rows['COLUMN_COMMENT']));
 }

print_r($arr);

我的数组看起来像这样:

[First_Name] => Array
        (
            [Comments] => Array
                (
                    [0] => 'Label' => 'First Name', 'Required' => 'Yes'
                )

        )...

我希望它看起来像这样:

[First_Name] => Array
            (
                [Comments] => Array
                    (
                        [Label] => 'First Name'
                        [Required] => 'Yes'
                    )

            )...

任何建议都会有所帮助。谢谢。我知道我必须在我的while循环中添加另一个代码块但是我已经尝试了所有内容并且无法使其工作。感谢。

2 个答案:

答案 0 :(得分:0)

$rows['COLUMN_COMMENT'])似乎是String类型,这就是为什么array($rows['COLUMN_COMMENT']))只是将它分配给索引0的原因。有很多种方法可以将它转换为数组,其中一种已经在这里讨论过:

Explode a string to associative array

答案 1 :(得分:0)

好的我明白了。谢谢大家的评论。为了回答上面的注释,我在列注释部分存储了一些字段属性,以便在动态加载表单时可以获取属性。以下是我试图做同样事情的人的代码。同样,如果有经验的开发人员提出反对意见的原因,请评论,因为我想知道这些缺点。我只是不想创建一个相关的表来存储字段属性,如果我可以将它们放在注释中并在加载时获取它们。我的页面再次通过读取mysql行动态生成表单,我想在输入字段中添加一些属性,以便我可以执行像屏蔽这样的操作。因此,当表单加载时,它会从注释中获取字段名称和属性。

while ($rows = mysqli_fetch_assoc($headerresults)){
    $arr[$rows['COLUMN_NAME']] = array("Comments" => array($rows['COLUMN_COMMENT']));
    $j[$rows['COLUMN_NAME']] = (array) json_decode($arr[$rows['COLUMN_NAME']]['Comments'][0]);
} 

然后返回:

Array
(
    [First_Name] => Array
        (
            [Label] => First Name
            [Required] => Required
        )

    [Middle_Name] => Array
        (
            [Label] => MI
            [Required] => Required
        )

    [Last_Name] => Array
        (
            [Label] => Last Name
            [Required] => Required
        )    
)

感谢您的评论和帮助。 JSON建议完美无缺。