我需要使用不同格式/结构的对象创建一个数组
我有:
$t = object()
$t > user = object()
$t > user > 0 (object) name = 'wilson';
$t > user > 0 (object) first = 'carl';
我需要得到:
$t = array(
name = wilson
first name = phil
这是我尝试过的以及我被困的地方
foreach($t as $a) {
foreach($a as $l) {
$arr[$l->0->name] = $l->0->first; // line 10
}
}
print_r($arr);
现在我收到一个错误:
PHP Parse错误:语法错误,意外T_LNUMBER,期待 T_STRING或T_VARIABLE或'{'或'$'在homework1-a-1.php上 第10行
我该怎么做才能解决它?
答案 0 :(得分:18)
你的问题令人困惑。这就是我的理解:
您有以下内容:
$t
,这是一个对象。$t->user
,也是一个对象。$t->user[0]->name = 'wilson'
$t->user[0]->first = 'carl'
你说你需要得到:
$t->name = 'wilson'
$t->first = 'carl'
你在问题中说'phil',但是给定的对象$t
没有提到'phil'所以我不知道'phil'是否凭空出现,或者是什么。
这是对问题的正确看法吗?如果是这样,您需要在问题中澄清这一点。说$t > user > 0 (object) name
毫无意义。
对不起,这是一个“答案”,我在评论中无法满足所有这些要求。如果你澄清问题,我会删除它。希望我不是唯一被这个困惑的人。
答案 1 :(得分:0)
$t = object()
$t > user = object()
$t > user > 0 (object) name = 'wilson';
$t > user > 0 (object) first = 'carl';
这不是有效的PHP代码。如果您想要显示的格式为$t
,请执行以下操作:
$t = array(
'name' => 'wilson',
'first name' => 'phil'
);
现在$t
是一个数组,其中包含键'name'
和'first name'
。
你的foreach循环没有任何意义。 $t
是一个包含两个字符串的数组。循环使用它只会给出值'wilson'
和'phil'
。
编辑:假设$t
给你,那么你的for循环应该是这样的:
foreach($t as $a) {
foreach($a as $l) {
$arr[$l->{0}->name] = $l->{0}->first;
}
}
你不能$l->0
。您需要将0
包裹在{}
中。 $l->{0}
。