array_merge 在 json 编码之前 PHP

array_merge before json encode in PHP

$myArray = array();

for($i=0;i<2;$i++){
..
.. //get the content logic here

assign it to array
$myArray["item"]["content"] = $item_content;
}
echo json_encode($myArray);

以上代码产生了这个结果:

其中有一个错误,因为我没有合并它们。

我试过这样合并:

$finalJson = array_merge($finalJson, $myArray); 

但是 echo $finalJson 的输出是一个对象而不是 3 个。

您考虑过使用 array_push 吗?

array_push 总是优于 myArray[] = $value

更新:

您的 真正的 问题归结于您在关联数组上使用 array_mergearray_merge 的行为是重新分配重复的键,如果它们是关联的(参见 the docs):

If the input arrays have the same string keys, then the later value for that key will overwrite the previous one. If, however, the arrays contain numeric keys, the later value will not overwrite the original value, but will be appended.

并且因为 $myArray 显然使用字符串作为键,$finalJson 中的值正在重新分配。您需要做的是在每次迭代时创建唯一键,或者只是将 $myArray 的值推入数字索引的 $finalJson 数组(就像我在下面的原始答案中显示的那样)


问题很简单:

$myArray["item"]["content"] = $item_content;

它在循环内部,每次重新分配$myArray["item"]["content"]的值,而不是将其添加到数组中。我怀疑您想做的是在循环底部添加它(对于 $myArray 的每个新值):

$finalJson[] = $myArray;

然后,在下一次迭代中,$myArray 将被重新分配,其新值将附加到 $finalJson 变量。

我有一个棘手的问题。

我做什么。 我从数据库的系统表(DEV,测试产品设置)生成表信息,Vies 触发器......与 PHP 比较结果,我看到与 JavaScript 的差异。

我还有一个用于附加业务信息的文档数据库,它只在测试数据库上安装过一次。

因此我需要连接所有四个环境来获取数据。

我用 如果($flag === 'i')

 for information DB and

elseif ($flag === 's')  

对于系统数据库。

结果是 $row_array 和 $info_array,必须将它们合并并发送回 Javascript。

$json_response =   array_merge($rinfo, $rsql );    

echo json_encode($json_response, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);    

我在程序的不同位置尝试合并。

第一次
elseif ($flag === 'i') {

结果json:

    [
    {
        "0": "ACT",……….
    } ][ ]        

second time after   }  //ifelse return also 2 arrays

    [{"0":"ACT","1":"Tabelle Akten","2":"hh","3":null,"4":null,"5":"UCC","6":"Y","7":"Reload Data in Test","8":"y","9":"delete all older tha","10":"n","11":" ","12":"y","13":" ","14":"o","15":"y","16":"o","17":"y","18":"y","19":"Diese tabelle speichert die Acten Verweise","20":"Gert Dorn","21":1570254359,"TDESCRIPTION":"n","TTYPE":" ","TREC_ESTIM":"y","TREC_GROWTH":" ","TDOMAIN":"o","TREL_TYPE":"y","TREL_RULES":"o","THOUSEKEEPING":"y","THOUSE_RULES":"y","TCID":"Diese tabelle speichert die Acten Verweise","TCID_RULES":"Gert Dorn","TUSE_UCC":1570254359,"TUSE_DWH":"","TUSE_ODS":"","TUSE_CWF":"","TUSE_IWF":"","TUSE_OWF":"","TUSE_DEP_MANAGER":"","TENTITY_DESCRIPTION":"","TOWNER":""

,"TTIMESTAMP":""**}][{**"0":"ACT","1":"DB2INST1"

,"2":"USERSPACE1","3":null,"4":"2018-11-21 16:43:20.066567","5":"2018-12-07 10:12:10.255759","6":null,"7":"2020-03-26","8":"2018-11-21 16:43:20.343258","9":3,"NAME":"ACT","CREATOR":"DB2INST1","TBSPACE":"USERSPACE1","REMARKS":"","CTIME":"2018-11-21 16:43:20.066567","STATS_TIME":"2018-12-07 10:12:10.255759","STATISTICS_PROFILE":"","LASTUSED":"2020-03-26","ALTER_TIME":"2018-11-21 16:43:20.343258","COLCOUNT":3}]    

程序代码和结果可在

下载

http://dmdg.io/dmdg.zip

希望你能帮上忙 格特问好