PHP中json编码前的数组合并

PHP中json编码前的数组合并,php,json,Php,Json,但是,echo$finalJson的输出是一个对象,而不是3个 >你考虑使用ARRAY-PUP? array_push始终优于myArray[]=$value更新: 您的real问题取决于在关联数组上使用array\u merge。array\u merge的行为是重新分配重复键(如果它们是关联的(cf)): 如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个值。但是,如果数组包含数字键,则后面的值将不会覆盖原始值,而是追加 由于$myArray显然使用字符串作为键,因此$finalJ

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

>你考虑使用ARRAY-PUP?

array_push始终优于myArray[]=$value

更新:

您的real问题取决于在关联数组上使用
array\u merge
array\u merge
的行为是重新分配重复键(如果它们是关联的(cf)):

如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个值。但是,如果数组包含数字键,则后面的值将不会覆盖原始值,而是追加

由于
$myArray
显然使用字符串作为键,因此
$finalJson
中的值正在重新分配。您需要做的是在每次迭代中创建唯一的键,或者简单地将
$myArray
的值推到一个数字索引的
$finalJson
数组上(如我在下面的原始答案中所示)


问题很简单:

$finalJson = array_merge($finalJson, $myArray); 
它位于循环内部,每次重新分配
$myArray[“item”][“content”]
的值,而不是将其添加到数组中。我猜想您想做的是将其添加到循环的底部(对于
$myArray
的每个新值):


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

我有一个棘手的问题

我所做的。 我从数据库的系统表(DEV,testprod setup)生成表的信息,VIE触发器…使用PHP,并将结果与JavaScript进行比较

另外,我还有一个文档数据库,用于获取额外的业务信息,它只在测试数据库上安装了一次

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

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

用于系统数据库

结果是$row_数组和$info_数组必须合并并发送回Javascript

 for information DB and

elseif ($flag === 's')  
我在程序中的不同位置尝试此合并

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

结果json:

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

echo json_encode($json_response, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);    
程序代码和结果可在以下位置下载:


希望您能帮助gert

有什么不同?首选?它不首选
$array[]
。事实上,建议使用
$array[]
!阅读“注意:如果您使用array\u push()向数组添加一个元素,最好使用$array[]=因为这样就没有调用函数的开销。”@jamieeason:cf我上面评论中的手册链接:没有区别,
array\u push
没有区别preferred@EliasVanOotegem那么,我的确切问题是什么呢?我在挠头。反复分配它们只会返回1个对象,但为什么最终会得到3个对象呢?因为
$finalJson
现在是一个数字索引数组,您可以只编写
data.length
。对于对象,您可以使用
Object.keys(anObject.length
var i=0,p;For(p in Object){if(Object.hasOwnProperty(p))++i;}console.log(i);
@jamieeason:这可能吗?记住:JS数组是稀疏的(
var-anArray=[1,2,3];
将有3个长度,
anArray[123]=4;
导致
anArray.length
为124,即使只有4个键可用set@jamieeason:
data
是一个数组,而不是一个对象,因此
data['item']
不起作用(它与
data.item
相同)。请检查控制台,并记录变量
console.log(数据)
,看看它的实际值是什么,试着找出为什么会出现你看到的行为(可能是一个对象,但它有自己的
length
属性?@jamieeason:它不是一堆文本,而是一个JSON字符串,你必须解析它才能将其用作JS数组:
data=JSON.parse(data);
,现在
data
将是一个数组,并且
data.length
将为您提供该数组的长度,
data[0]。title
将为您提供该数组中第一个对象的标题值,等等。
data.length
之前是27118,因为字符串由27118个字符组成:)@jamieeason:这取决于:如果您只是
echo
输出中的json编码字符串(不带引号)(HTML/JS源文件中的php echo),则不需要解析它。如果您使用jQuery,并且发送了
内容类型:application/json
头,jQ将为您解析它。如果字符串被引用,或者作为带有
内容类型:text/plain
头的ajax响应发送,那么您必须首先解析字符串。很抱歉问这个问题,但我觉得我已经这样做了为了尽我最大的努力帮助你,你介意放弃我的答案来奖励我的努力吗
$finalJson[] = $myArray;
 for information DB and

elseif ($flag === 's')  
$json_response =   array_merge($rinfo, $rsql );    

echo json_encode($json_response, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);    
    [
    {
        "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}]