将新数组添加到多维数组项

时间:2012-08-21 17:22:00

标签: php multidimensional-array

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

如果我print_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;}
 }

如果我print_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错误 严重性:注意 消息:数组到字符串转换

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

3 个答案:

答案 0 :(得分:1)

请参阅array_push array_unshift

数组推送将元素放在最后。数组unshift在数组的开头添加一个数字。

您也可以使用结构

$myArray['nameOfNewElement']=$newElement;

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

答案 1 :(得分:1)

您可以使用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

希望,它会帮助你。

答案 2 :(得分:0)

当您编写$data['one'] = $rs;时,您指定$ rs来覆盖值"Hello"

也许你想要做的是

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