Php 将项添加到关联数组 //检查每个问题 foreach($file\u数据为$value){ //通过管道分隔字符串并放入变量 列表($category,$question)=分解(“|”,$value); //放置在assoc数组中 $data=array($category=>$question); 打印(数据); }

Php 将项添加到关联数组 //检查每个问题 foreach($file\u数据为$value){ //通过管道分隔字符串并放入变量 列表($category,$question)=分解(“|”,$value); //放置在assoc数组中 $data=array($category=>$question); 打印(数据); },php,arrays,associative-array,Php,Arrays,Associative Array,这不起作用,因为它会替换数据的值。如何让它在每个循环中添加关联值$file\u data是具有动态大小的数据数组。for循环之前: $data = array(); 然后在循环中: $data[] = array($catagory => $question); 我想你需要$data[$category]=$question 或者,如果您需要将类别映射到问题数组的数组: $data = array(); foreach($file_data as $value) { list(

这不起作用,因为它会替换数据的值。如何让它在每个循环中添加关联值
$file\u data
是具有动态大小的数据数组。

for循环之前:

$data = array();
然后在循环中:

$data[] = array($catagory => $question);

我想你需要
$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);
你可以简单地做到这一点

$data += array($category => $question);
如果您的应用程序在PHP5.4上运行+

$data += [$category => $question];

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

array_push($data,array($category=>$question));
这将把
数组
推到当前
数组
的末尾。或者,如果您只是尝试向数组末尾添加单个值,而不是更多数组,则可以使用以下方法:

array\u push($data,$question);

对于需要添加到2d关联数组中的任何人,您也可以使用上面给出的答案,并使用如下代码

 $data[$category]["test"] = $question
然后,您可以调用它(通过以下方式测试结果):

echo $data[$category]["test"];

如果这样做,请不要忘记首先使用$data=array()初始化数组;否则php将抛出一个通知我认为会缓存我的答案,当我发布答案时,我意识到我没有在他的代码中看到它被初始化。所以我添加了它,然后我看到了您的评论,谢谢:-)这不起作用,因为它在数组中生成了一个数组。很抱歉,如果我的问题有点通过你的off.PHP 5.4+你可以少写一点代码:
$data=[]
$data[]=[$category=>$question]
$res=array()$res[]=数组('foo'=>$bar)$foo=$res['foo']因未定义索引而失败:foo in..,但下面建议的加号有效。其他程序员会因为键入错误而讨厌你,因为他们也会被迫这样做,或者修复这些错误。我对数组太熟悉了,忘记了基础!真的很有帮助!这是向关联数组添加项的正确答案。也可以添加多个元素:$data+=['x'=>1,'y'=>2];如果您不希望在数组中包含多个对象,则可以使用这种方法。注意:如果您的数组中没有具有相同键的元素,则可以使用这种方法,因此它不能覆盖现有元素。