Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.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
PHP:更改类内的变量_Php_Json_Class - Fatal编程技术网

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

我正在处理一个类,并尝试使用json_encode输出它,但变量不会改变

PHP:


输出:

{“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";