Php 如何将多个数组元素强制转换为对象

Php 如何将多个数组元素强制转换为对象,php,Php,我正在尝试创建一个包含多个对象的数组 我写了这段代码(它是一个现有类的成员) 但我得到了这个错误: 语法错误,意外的'(对象)'(对象)(T_object_CAST), 期待“)” 在第二行 我认为这应该行得通,因为我已经使用了相同的强制转换语法来定义关联数组元素: return view('edit-headquarter', [ 'hq' => (object)['name' => '', 'id' => 0], 'submitAction' => 'inse

我正在尝试创建一个包含多个对象的数组

我写了这段代码(它是一个现有类的成员)

但我得到了这个错误:

语法错误,意外的'(对象)'(对象)(T_object_CAST), 期待“)”

在第二行

我认为这应该行得通,因为我已经使用了相同的强制转换语法来定义关联数组元素:

return view('edit-headquarter', [
  'hq' => (object)['name' => '', 'id' => 0],
  'submitAction' => 'insert'
]);
我做错了什么

编辑:我使用的是PHP5.4.45


我不确定,但正如Martin Persson所建议的那样,如果您使用的是低于v5.6的PHP版本,则不允许将表达式作为类成员的默认值。除此之外,我不认为您声明它的方式有任何错误。

若要将关联数组强制转换为对象,您可以使用有点脏的,但广泛使用


$obj=json_解码(json_编码($arr))

我认为这与您的php版本有关。如果它不起作用,您可以考虑声明一个Stdclass对象,或者更好地,实现一个从提供的数组返回Stdclass对象的函数。(另外,另一个可能的技巧是对json_编码(数组)进行json_解码)@user340764,在哪里可以正常工作?重点是什么?您可以将数组转换为
stdClass
对象,这些对象只是具有较少功能和不同语法的数组。它们不提供任何有用的OOP特性。您最好创建一个类
Role
,并将
code
name
的值作为参数传递给其构造函数。不再需要转换,您可以根据需要为其添加更多功能。@axiac:我正在学习PHP,所以我正在探索各种可能性。关键是能够以与其他对象相同的方式使用o::$Roles[0]->代码,只是为了一致性。我不明白为什么这不起作用,因为我在其他地方使用相同的语法,正如我所说的“像任何其他PHP静态变量一样,静态属性只能使用文本或常量初始化;不允许使用表达式。”我将表达式提取到一个变量中,并将该变量用作默认值。该对象现在创建得很好。我在定义stating属性时收到一个错误。好的,正如Federico所建议的,我都不能使用变量作为初始值设定项。这是有道理的。。。谢谢大家!!
return view('edit-headquarter', [
  'hq' => (object)['name' => '', 'id' => 0],
  'submitAction' => 'insert'
]);