【问题标题】:How to store an array as a value of a key in another array in PHP?如何将数组作为键的值存储在 PHP 中的另一个数组中?
【发布时间】:2019-05-30 23:14:46
【问题描述】:

我正在尝试将数组作为键的值存储在另一个数组中。 我不能使用像 array_push() 或 for 循环这样的函数,因为第二个数组是作为函数的参数创建的。

我已经用谷歌搜索了几个小时,但找不到任何答案!我是 PHP 新手,所以我不知道这是否可能。

第一个数组是这样的:

    $choices[] = array('1'=>'Blue','2'=>'Red)

编辑:这是我要添加的代码

    $choices[] = array('1'=>'Blue','2'=>'Red');

缺少'; 是一个错字。数组的创建方式要复杂得多。在我尝试抽象和简化它以将其发布在这里时,我错过了 '; 。感谢@diéfani-favareto-piovezan 发现了这一点。

现在我想将此数组作为键的值插入另一个数组中,该数组是在另一部分代码中创建的:

     return randomFunction('random text', array(
                                   'a' => 'apple',
                                   'b' => 'banana',
                                   'c' =>  ,
                                  )

                          )

我希望数组 $choices 成为键 'c' 的值。

我试过了

     return randomFunction('random text', array(
                                   'a' => 'apple',
                                   'b' => 'banana',
                                   'c' => $choices,
                                  ),

                          )

但它给了我一个错误

编辑:我的意思是说我试过了

     return randomFunction('random text', array(
                                   'a' => 'apple',
                                   'b' => 'banana',
                                   'c' => $choices,
                                  )

                          )

再次尝试抽象和简化时(在 RandomFunction 中创建的实际数组大约有 250 行),我错误地添加了额外的逗号。感谢@brevis、@Nick 和@tim 发现并引起我的注意。

    Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW), expecting ')' in /filename.php line 120

错误提到了代码的另一行,但我知道这不是原因,因为如果我删除了

                                   'c' => $choices,

没有错误。

编辑:我的意思是说“在我添加 'c' 行之前”(而不是“如果我删除它”),没有错误。我还可以添加 $choices 的创建在 randomFunction 数组之前,所以这是我知道那里没有错误的另一个原因。

结论: 正如我所提到的,错误是'c' 行之后的额外),,我在尝试简化代码时未能在此处重现。我认为当我在实际代码中添加'c' 行时,我一定是错误地添加了额外的),。我只能找到这一点,因为@nick 说randomFunction 代码(“我试过这个”之后的那个)应该可以工作。这是我需要确认错误不在该行上的答案。感谢@dont-panic 的评论,我更仔细地查看了收到的错误消息,发现了额外的)'。在一天结束时,每个人都帮助了我。所以谢谢大家!

对于遇到此问题的任何人,工作代码是

    $choices[] = array('1'=>'Blue','2'=>'Red');

     return randomFunction('random text', array(
                                   'a' => 'apple',
                                   'b' => 'banana',
                                   'c' => $choices,
                                  )

                          );

*

【问题讨论】:

  • 在这种情况下,数组右括号后昏迷 99% 错误(
  • 你写的代码(数组后面的伪逗号除外)是可以的。如果需要帮助,您需要向我们展示所有代码,包括带有实际错误消息的行
  • 为什么该行相关?我已经说过如果我删除'c'行没有错误。
  • 该行可能不是错误的直接原因,但我们在这里遇到的问题是该错误无法从您问题中的代码中重现。您显示的代码中存在语法错误,而不是会导致您遇到的特定解析错误的语法错误。
  • 无法调试“示例”,嘿,医生这里是断臂的示例,不是我的,但您能帮我修复一下吗?

标签: php arrays key-value-store


【解决方案1】:

您的代码在 Red 后面缺少单引号和分号。

试试这个,看看它是否有效:

$choices[] = array('1'=>'Blue','2'=>'Red');

【讨论】:

  • 代码只是一个例子。数组的创建方式要复杂得多。就像我说的,如果我删除 'c' 行,就没有错误。
【解决方案2】:

好的,我发现了错误:

我在第二个数组的末尾添加了一个额外的),

工作代码是

$choices[] = array('1'=>'Blue','2'=>'Red');

 return randomFunction('random text', array(
                               'a' => 'apple',
                               'b' => 'banana',
                               'c' => $choices,
                              )

                      );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 2021-01-12
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多