如何向 php 数组中的每个对象添加新的键值对?

Ani*_*udh 7 php arrays foreach

我的代码:场景1

$newarray = array();

foreach($rows as $k => $v) 
    {
           $newarray[$k] = $v;
           $newarray['newitem'] = 'Add this to existing object';   
    }
echo json_encode($newarray);
Run Code Online (Sandbox Code Playgroud)

我也尝试过:场景2

$newarray = array();

foreach($rows as $k => $v) 
    {
           $newarray[$k] = $v;
           $newarray[$k]['newitem'] = 'Add this to existing object';   
    }
echo json_encode($newarray);
Run Code Online (Sandbox Code Playgroud)

在场景 1 中,仅在第一个对象之后添加键值对。它不会循环通过。在场景 2 中,我收到 HTTP ERROR 500

我在这里做错了什么?

更新:

现有输出:

[{"pid":"123","date":"2016-08-23 08:08:40","post_title":"AHHH"},{"pid":"223","date":"2016-08-23 08:08:40","post_title":"wwwwAHHH"},{"pid":"223","date":"2016-08-23 08:08:40","post_title":"xxxAHHH"}]
Run Code Online (Sandbox Code Playgroud)

所需输出:

[{"pid":"123","date":"2016-08-23 08:08:40","post_title":"AHHH","newkey":"new value1"},{"pid":"223","date":"2016-08-23 08:08:40","post_title":"wwwwAHHH","newkey":"new value2"},{"pid":"223","date":"2016-08-23 08:08:40","post_title":"xxxAHHH","newkey":"new value3"}]
Run Code Online (Sandbox Code Playgroud)

Rig*_*lly 6

您可以创建一个包含所需内容的临时数组,然后将其添加到 newarray 中,因此创建一个临时数组,添加新数据和现有数据,然后将其添加到 newarray 中

\n\n
$newarray = array();\nforeach($rows as $k => $v) \n{\n    $t = $v;\n    $t[\'newitem\'] = \'Add this to existing object\';\n    $newarray[$k] = $t;\n}\necho json_encode($newarray);\n
Run Code Online (Sandbox Code Playgroud)\n\n

编辑:

\n\n

现在我知道里面$rows是一个 JSON 字符串,这是执行您想要的操作的方法。您不能对 JSON 字符串进行 foreach,必须首先将其转换为 PHP 数据结构,然后对其进行 foreach 添加新数据,然后将其转换回 JSON 字符串

\n\n
$rows = \'[{"pid":"123","date":"2016-08-23 08:08:40","post_title":"AHHH"},{"pid":"223","date":"2016-08-\xe2\x80\x8c\xe2\x80\x8b23 08:08:40","post_title":"wwwwAHHH"},{"pid":"223","date":"2016\xe2\x80\x8c\xe2\x80\x8b-08-23 08:08:40","post_title":"xxxAHHH"}]\';\n\n$objArray = json_decode($rows);\n\n$newarray = array();\nforeach($objArray as $v) \n{\n\n    $v->newitem = \'Add this to existing object\';\n    $newarray[] = $v;\n}\nprint_r($newarray);\necho json_encode($newarray);\n
Run Code Online (Sandbox Code Playgroud)\n\n

$newArray现在是

\n\n
Array\n(\n    [0] => stdClass Object\n        (\n            [pid] => 123\n            [date] => 2016-08-23 08:08:40\n            [post_title] => AHHH\n            [newitem] => Add this to existing object\n        )\n\n    [1] => stdClass Object\n        (\n            [pid] => 223\n            [date] => 2016-08-\xe2\x80\x8c\xe2\x80\x8b23 08:08:40\n            [post_title] => wwwwAHHH\n            [newitem] => Add this to existing object\n        )\n\n    [2] => stdClass Object\n        (\n            [pid] => 223\n            [date] => 2016\xe2\x80\x8c\xe2\x80\x8b-08-23 08:08:40\n            [post_title] => xxxAHHH\n            [newitem] => Add this to existing object\n        )\n\n)\n
Run Code Online (Sandbox Code Playgroud)\n\n

新的 JSON 字符串将是

\n\n
[  {"pid":"123",\n    "date":"2016-08-23 08:08:40",\n    "post_title":"AHHH",\n    "newitem":"Add this to existing object"\n   },\n   {"pid":"223",\n    "date":"2016-08-\\u200c\\u200b23 08:08:40",\n    "post_title":"wwwwAHHH",\n    "newitem":"Add this to existing object"\n   },\n   {"pid":"223",\n    "date":"2016\\u200c\\u200b-08-23 08:08:40",\n    "post_title":"xxxAHHH",\n    "newitem":"Add this to existing object"\n   }\n]\n
Run Code Online (Sandbox Code Playgroud)\n