Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.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
如何从javascript访问php对象数组中php对象的属性_Javascript_Php - Fatal编程技术网

如何从javascript访问php对象数组中php对象的属性

如何从javascript访问php对象数组中php对象的属性,javascript,php,Javascript,Php,我有一个php对象数组。在javascript函数中,我希望访问数组中对象的属性。如果Ijson\u encode整个数组,它会显示这些属性是未定义的。我怎样才能做到这一点。我是PHP新手 PHP代码: $\u会话['objArray']=$objArray; Javascript代码: constobjarray=; 将php数组存储到javascript变量中 示例值:(会话['objArray']中的示例数组) $\u会话['objArray']=array( 'name'=>'foo'

我有一个php对象数组。在javascript函数中,我希望访问数组中对象的属性。如果I
json\u encode
整个数组,它会显示这些属性是
未定义的
。我怎样才能做到这一点。我是PHP新手

PHP代码:

$\u会话['objArray']=$objArray;
Javascript代码:

constobjarray=;

将php数组存储到javascript变量中

示例值:(会话['objArray']中的示例数组)

$\u会话['objArray']=array(
'name'=>'foo',
'电子邮件'=>'foo@gmail.com',
“年龄”=>30岁
);
将对象转换为数组:(可选)(如果在会话['objArray']中有对象值))

$\u会话['objArray']=json\u解码(json\u编码($\u会话['objArray']),true);
解决方案:(分配给javascript变量
objArray


const objArray=“”;
控制台日志(objArray);
控制台输出:

{“name”:“foo”,“email”:foo@gmail.com“,“年龄”:30}

<> >强> >代码> JSONY-EnCODION/COD>函数将数组转换为<代码> JSON 字符串,JavaScript将其视为字符串,在赋值时,需要用“引用代码”来覆盖它的代码> <代码>或<代码>


希望有帮助。

您当然需要将数组编码为JSON,以便JavaScript客户端可以使用它

正如您所提到的,数组中有特定类的实例,因此简单的JSON编码肯定无法工作

这里,PHP附带了接口。你必须在你的类上实现这个接口。让我们使用一个<代码> Foo例子:

类Foo实现JsonSerializable
{
私人物品;
公共函数构造($thing)
{
$this->thing=$thing;
}
公共函数jsonSerialize()
{
返回[
“thing”=>$this->thing,
];
}
} 
是上述代码片段的一个示例。如您所见,现在您可以创建
Foo
的实例,将其嵌入数组或其他任何形式,并使用您自己的表示对其进行JSON编码:

$foo=newfoo('something');
echo json_encode(['foo'=>$foo]);
//{“foo”:{“thing”:“something”}
将其输出到内联JavaScript块的工作原理与您编写的类似:

<script type="application/javascript">
const obj = "<?php echo json_encode(($_SESSION['objArray'])) ?>;";
</script>

const obj=“;";

你试过什么吗?你能粘贴一些你写的代码吗?我编辑了这个问题来展示代码。解决这个问题会有很大帮助。$objArray是包含php对象的数组。你给出的数组是键值对,但我拥有的数组由特定类的对象组成。这些对象在哼哼。我需要的是访问那些属性。我已经更新了答案,你可以使用
json\u解码(json\u编码($\u SESSION['objArray']),true)将你的对象转换为数组;
@turivishal这是粗略的想法。hi@victor,我不明白你的意思,你能解释一下吗。@turivishal通过
json\u解码(json\u encode())
你无法控制序列化的对象。你在使用时依赖于PHP的行为。老实说,我认为这是一种黑客行为。除此之外,序列化和反序列化JSON都是非常缓慢的操作,因此我们不应该只做一次反转操作。我尝试过,但结果显示了这一点。”声誉低于15%的人所投的票会被记录下来,但不会改变公开展示的帖子分数。“我相对来说是新来的。