Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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:convert object to array为我提供数组字段的索引';名称空间是什么?_Php_Arrays - Fatal编程技术网

PHP:convert object to array为我提供数组字段的索引';名称空间是什么?

PHP:convert object to array为我提供数组字段的索引';名称空间是什么?,php,arrays,Php,Arrays,我有这门课: namespace backoffice\controller; class MyObject{ private $id; private $name; } 我尝试将其转换为数组,然后转换为json数组: $obj = new MyObject(); $obj->setId(1); $obj->setName('Test'); json_encode((array)$obj); 我得到这个结果: {“backoffice\controller\MyO

我有这门课:

namespace backoffice\controller;

class MyObject{
   private $id;
   private $name;
}
我尝试将其转换为数组,然后转换为json数组:

$obj = new MyObject();
$obj->setId(1);
$obj->setName('Test');

json_encode((array)$obj);
我得到这个结果:
{“backoffice\controller\MyObject\id”:“1”,“backoffice\controller\MyObject\name”:“Test”}
!!!! 编辑:
为什么我不能得到这个结果:

{"id":"1","name":"Test"}

与其将其转换为array(),不如让您的
MyObject
实现该接口

namespace backoffice\controller;

class MyObject implements \JsonSerializable
{
   private $id;
   private $name;

   public function jsonSerialize() {
       return get_object_vars($this);
   }

   // setters
}
然后您可以直接在其上使用
json\u encode
,并获得所需的结果:

$obj = new MyObject;
$obj->setId(1);
$obj->setName('foo');
echo json_encode($obj); // {"id":1,"name":"foo"}

你的问题是什么?@Daan抱歉,我编辑了这个问题,请看一看。因为你使用的是命名空间。。。这就是为什么。@MarcB所以我对此无能为力?在文档中看不到任何可以忽略/跳过名称空间的选项。。。请注意,您的
(数组)
类型转换基本上是没有意义的。您使用的是字符串键,这意味着您必须使用JS对象来存储数据。数组不能有命名键。