向多维数组项添加新数组


Adding a new array to a multidimensional array item

我需要在不覆盖旧数据的情况下向数组添加一些细节。

现在我有这样的东西,如果我打印_r($data)

 Array
 (
   [one] => Hello
   [two] => Hello World
 )

然后我有一个函数,可以将一些数据添加到阵列中

 foreach ($rubric as $rs){
      if($rs['position']==1){$data['one']=$rs;}
  if($rs['position']==2){$data['two']=$rs;}
 }

如果我打印_r($data),这会给我以下信息

Array
(
   [one] => Array
      (
         [id] => 1
      )
   [two] => Array
      (
         [id] => 2
      )
)

有人有什么想法吗

我想做的是…

 foreach ($rubric as $rs){
      if($rs['position']==1){$data['one']['details']=$rs;}
  if($rs['position']==2){$data['two']['details']=$rs;}
 }

目的是在每个数组项中添加一个名为"details"的新子数组。。。

这有道理吗?如果我试图运行该代码,但我得到以下错误

遇到PHP错误严重程度:通知消息:数组到字符串的转换

有人能告诉我我做错了什么吗?

请参阅,array_push array_unshift。

数组推送将元素置于末尾。数组取消移位会在数组的开头添加一个数字。

您也可以使用结构

$myArray['nameOfNewElement']=$newElement;

这将$newElement添加到数组$myArray;

您可以使用array_merge。

根据您的问题,以下是解决方案:

// sample array
$rubric = array(0=> array("position"=>1),1 => array("position"=>2));
$data = array("one" => "Hello","two" => "hello world");
foreach ($rubric as $rs){
      if($rs['position']==1){
           $d= array_merge($data,$rs);
      }
      if($rs['position']==2){
          $d= array_merge($data,$rs);
      }
 }
print_r($d);

以下是正在运行的演示:http://codepad.org/rgKiv542

希望它能帮助你。

当您编写$data['one'] = $rs;时,您正在分配$rs来覆盖值"Hello"

也许你想做的是

$data['three'] = $rs['id'];