0

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

目前,如果我 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;}
 }

目的是在每个数组项中添加一个名为“详细信息”的新子数组...

那有意义吗?但是,如果我尝试运行该代码,则会收到以下错误

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

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

4

3 回答 3

1

请参阅 array_push array_unshift

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

也可以使用结构

$myArray['nameOfNewElement']=$newElement;

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

于 2012-08-21T17:28:00.330 回答
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

希望,它会帮助你。

于 2012-08-21T17:38:05.107 回答
0

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

也许你想做的是

$data['three'] = $rs['id'];
于 2012-08-21T17:26:51.263 回答