在PHP中构建动态数组

时间:2011-12-30 21:19:02

标签: php syntax-error

我需要使用不同格式/结构的对象创建一个数组

我有:

$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行

我该怎么做才能解决它?

2 个答案:

答案 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}