将项添加到关联数组

Phi*_*hil 75 php

//go through each question
foreach($file_data as $value) {
   //separate the string by pipes and place in variables
   list($category, $question) = explode('|', $value);

   //place in assoc array
   $data = array($category => $question);
   print_r($data);

}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为它取代了数据的价值.我怎么能让它在每个循环中添加一个关联值呢?$file_data是一个具有动态大小的数据数组.

Moh*_*din 100

你可以这么做

$data += array($category => $question);
Run Code Online (Sandbox Code Playgroud)

如果你在php 5.4+上运行

$data += [$category => $question];
Run Code Online (Sandbox Code Playgroud)

  • 世界上有什么? (15认同)
  • 这是将项添加到关联数组的正确答案. (7认同)
  • 也添加多个元素:$ data + = ['x'=> 1,'y'=> 2]; (4认同)

Thi*_*ter 89

我想你想要的 $data[$category] = $question;

或者,如果您想要一个将类别映射到问题数组的数组:

$data = array();
foreach($file_data as $value) {
    list($category, $question) = explode('|', $value, 2);

    if(!isset($data[$category])) {
        $data[$category] = array();
    }
    $data[$category][] = $question;
}
print_r($data);
Run Code Online (Sandbox Code Playgroud)

  • 其他程序员会讨厌打字错误,因为他们也会被迫做错,或者修复它们. (8认同)

moe*_*moe 27

在for循环之前:

$data = array();
Run Code Online (Sandbox Code Playgroud)

然后在你的循环中:

$data[] = array($catagory => $question);
Run Code Online (Sandbox Code Playgroud)

  • 这是添加到数组中,但作为一个单独的对象 (4认同)
  • 这没有用,因为它在数组内部创建了一个数组。不好意思,如果我的问题还可以解决。 (3认同)
  • 如果你这样做,不要忘记首先使用 $data = array(); 初始化数组。否则 php 会抛出一个通知 (2认同)

max*_*ran 6

对于还需要添加到二维关联数组中的任何人,您也可以使用上面给出的答案,并使用这样的代码

 $data[$category]["test"] = $question
Run Code Online (Sandbox Code Playgroud)

然后你可以调用它(通过以下方式测试结果:

echo $data[$category]["test"];
Run Code Online (Sandbox Code Playgroud)

应该打印 $question


Mik*_*ike 5

我知道这是一个老问题,但是您可以使用:

array_push($data, array($category => $question));
Run Code Online (Sandbox Code Playgroud)

这将把当前操作推array到最后array。或者,如果您只是想将单个值添加到数组的末尾,而不要添加更多的数组,则可以使用以下方法:

array_push($data,$question);
Run Code Online (Sandbox Code Playgroud)