PHP:更改类内的变量
我正在处理一个类,并尝试使用json_encode输出它,但变量不会改变 PHP:PHP:更改类内的变量,php,json,class,Php,Json,Class,我正在处理一个类,并尝试使用json_encode输出它,但变量不会改变 PHP: 输出: {“person”:{“lastname”:“,“firstname”:”},“lastname”:“Foo”,“firstname”:“Bar”} 预期产出: {“person”:{“lastname”:Foo”,“firstname”:“Bar”} 有人能给我解释一下为什么它不会改变吗 要设置您不应该呼叫的$user,请执行以下操作: $user->person->firstname
输出:
{“person”:{“lastname”:“,“firstname”:”},“lastname”:“Foo”,“firstname”:“Bar”}
预期产出:
{“person”:{“lastname”:Foo”,“firstname”:“Bar”}
有人能给我解释一下为什么它不会改变吗 要设置您不应该呼叫的
$user
,请执行以下操作:
$user->person->firstname = "Foo";
$user->person->lastname = "Bar";
或者,您也可以先设置name
变量,然后再在person
$name = new name();
$name->firstname = "Foo";
$name->lastname = "Bar";
$user->person = $name;
编辑
如果您只需要一个类,并且希望复制预期的输出:
class person {
public $firstname;
public $lastname;
}
$user = new person();
$user->firstname = "Foo";
$user->lastname = "Bar";
echo json_encode(array('person' => $user));
更改这些行
$user->lastname = "Foo";
$user->firstname = "Bar";
到
您从不分配这些属性,这就是为什么它们在字符串中为空。相反,您将它们分配给用户
,而不是名称
,这就是为什么您在编码的名称
后看到它们的原因严格地说,这是不允许的,你应该得到一个严格的警告。将
名称
类分配给$user->person
因此,当为name
类中的firesname
和lastname
赋值时,应使用以下代码
$user->person->lastname="Foo";
$user->person->firstname="Bar";
或
<> > <代码> <代码> >代码>姓氏< /代码>变量>代码>名称>代码>类被认为是新的数据,或者如果他真的想使用<代码> $Up>第一个名字>代码>,他可以扩展类,这使得语义更加合理。有什么方法可以缩短输出相同的类吗?就像我只想把它们放在一个类中一样?是的,你可以简单地用一个
person
类和两个变量$firstname
和$lastname
你能给我一个例子吗?我不想在代码中使用数组。有什么办法吗?有没有办法用相同的输出缩短类?就像我只想把他们分为一类?
$user->person->lastname = "Foo";
$user->person->firstname = "Bar";
$user->person->lastname="Foo";
$user->person->firstname="Bar";