为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
肥皂起泡泡 2023-07-08 15:32:56
我有一个 php 对象数组。在 JavaScript 函数中,我想访问数组中对象的属性。如果我json_encode整个数组,它显示这些属性是undefined。我怎样才能做到这一点。我是 PHP 新手。PHP代码:$_SESSION['objArray'] = $objArray;JavaScript 代码:const objArray = <?php echo json_encode(($_SESSION['objArray'])) ?>;
查看完整描述

2 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

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

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

这里,PHP自带了JsonSerializable接口。您必须在您的类上实现此接口。让我们举个Foo例子:

class Foo implements JsonSerializable

{

  private $thing;


  public function __construct($thing)

  {

    $this->thing = $thing;

  }


  public function jsonSerialize()

  {

    return [

      'thing' => $this->thing,

    ];

  }

这是上述代码片段的示例。如您所见,现在您可以创建 的实例Foo,将其嵌入到数组或其他内容中,并使用您自己的表示形式对其进行 JSON 编码:


$foo = new Foo('something');

echo json_encode(['foo' => $foo]);


// {"foo": {"thing": "something"}}

将其输出到内联 JavaScript 块中的工作方式与您编写的类似:


<script type="application/javascript">

const obj = "<?php echo json_encode(($_SESSION['objArray'])) ?>;";

</script>


查看完整回答
反对 回复 2023-07-08
?
jeck猫

TA贡献1909条经验 获得超7个赞

将 php 数组存储到 javascript 变量中,


示例值:( 内部示例数组$_SESSION['objArray'])


$_SESSION['objArray'] = array(

    'name' => 'foo',

    'email' => 'foo@gmail.com',

    'age' => 30

);

将对象转换为数组:(可选)(如果里面有对象值$_SESSION['objArray'])


$_SESSION['objArray'] = json_decode(json_encode($_SESSION['objArray']), true);

解决方案:( 分配给javascript变量objArray)


<script>

    const objArray = "<?php echo json_encode($_SESSION['objArray']); ?>";

    console.log(objArray);

</script>

控制台输出:


{"name":"foo","email":"foo@gmail.com","age":30}

说明: json_encode函数会将数组转换为json字符串,JavaScript 会将其视为字符串,并且在赋值时需要用引号将其'或覆盖"。


希望这有帮助。


查看完整回答
反对 回复 2023-07-08
  • 2 回答
  • 0 关注
  • 143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信