Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 合并2个数组并将其编码为Json将返回无效字符_Php_Arrays_Json - Fatal编程技术网

Php 合并2个数组并将其编码为Json将返回无效字符

Php 合并2个数组并将其编码为Json将返回无效字符,php,arrays,json,Php,Arrays,Json,我合并2个数组,以便将其编码为Json,但实际情况如下: {"\u0000*\u0000_id":1,"\u0000*\u0000_mapper":{},"\u0000*\u0000_avatar":"","\u0000*\u0000_name":"Name","\u0000*\u0000_surname":"Name","\u0000*\u0000_email":"something@domain.com","\u0000*\u0000_gsm":"301313","\u0000*\u0000

我合并2个数组,以便将其编码为Json,但实际情况如下:

{"\u0000*\u0000_id":1,"\u0000*\u0000_mapper":{},"\u0000*\u0000_avatar":"","\u0000*\u0000_name":"Name","\u0000*\u0000_surname":"Name","\u0000*\u0000_email":"something@domain.com","\u0000*\u0000_gsm":"301313","\u0000*\u0000_password":"somepassword201","\u0000*\u0000_language":1,"\u0000*\u0000_phone":"","\u0000*\u0000_company":"","\u0000*\u0000_vat":"","\u0000*\u0000_registrationDate":"2015-07-07 09:55:31","\u0000*\u0000_address":8,"\u0000*\u0000_lastLogin":"2015-07-24 09:06:45","\u0000*\u0000_username":"someusername","\u0000*\u0000_salt":"12qidjoasidj8192u319ehj129dusafioj","\u0000*\u0000_hash":"","\u0000*\u0000_activated":true,"\u0000*\u0000_timeZone":0,"error":"false"}`
当我使用
json\u encode()
代码:


如何解决此问题?

它与合并无关。显然,您的
$user
对象包含受保护的属性,这些属性在被强制转换到数组时会出现。这两个
NUL
字节以JSON格式编码为
\u0000

我这样做修复了它:

public function getuserAction() {
    if ($this->checkLoggedIn()) {
        $user = $this->cache->user;
        $info = array('error' => 'false');
        $response = $this->mergeJsons(Zend_Json::encode($info), Zend_Json::encode($user);
        $this->view->jsonResponse = $response;
        $this->renderScript('/appapi/showjson.phtml');
    }
}
//The 'true' parameter means it's gonna create an array from the Json
private function mergeJsons($json1, $json2) {
    $result = array_merge(Zend_Json::decode($json1, true), Zend_Json::decode($json2, true));

    return Zend_Json::encode($result);
}

请发布
var\u dump($user)
的输出。这就是Unicode字符串在JSON中的编码方式。显然,
$user
具有Unicode属性名。
public function getuserAction() {
    if ($this->checkLoggedIn()) {
        $user = $this->cache->user;
        $info = array('error' => 'false');
        $response = $this->mergeJsons(Zend_Json::encode($info), Zend_Json::encode($user);
        $this->view->jsonResponse = $response;
        $this->renderScript('/appapi/showjson.phtml');
    }
}
//The 'true' parameter means it's gonna create an array from the Json
private function mergeJsons($json1, $json2) {
    $result = array_merge(Zend_Json::decode($json1, true), Zend_Json::decode($json2, true));

    return Zend_Json::encode($result);
}