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

我有一个 php 对象数组。在 JavaScript 函数中,我想访问数组中对象的属性。如果我json_encode整个数组,它显示这些属性是undefined。我怎样才能做到这一点。我是 PHP 新手。

PHP代码:

$_SESSION['objArray'] = $objArray;

JavaScript 代码:

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


肥皂起泡泡
浏览 144回答 2
2回答

12345678_0001

您当然需要将数组编码为 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>

jeck猫

将 php 数组存储到 javascript 变量中,示例值:( 内部示例数组$_SESSION['objArray'])$_SESSION['objArray'] = array(&nbsp; &nbsp; 'name' => 'foo',&nbsp; &nbsp; 'email' => 'foo@gmail.com',&nbsp; &nbsp; 'age' => 30);将对象转换为数组:(可选)(如果里面有对象值$_SESSION['objArray'])$_SESSION['objArray'] = json_decode(json_encode($_SESSION['objArray']), true);解决方案:( 分配给javascript变量objArray)<script>&nbsp; &nbsp; const objArray = "<?php echo json_encode($_SESSION['objArray']); ?>";&nbsp; &nbsp; console.log(objArray);</script>控制台输出:{"name":"foo","email":"foo@gmail.com","age":30}说明: json_encode函数会将数组转换为json字符串,JavaScript 会将其视为字符串,并且在赋值时需要用引号将其'或覆盖"。希望这有帮助。
打开App,查看更多内容
随时随地看视频慕课网APP