在 PHP 中构建动态数组


Build dynamic array in PHP

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

我有:

$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 解析错误:语法错误、意外T_LNUMBER、预期 T_STRING或T_VARIABLE或家庭作业中的"{"或"$"1-a-1.php 第 10 行

我能做些什么来修复它?

你的问题令人困惑。这是我的理解:

您有以下各项:

  • $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没有意义。

抱歉,这是一个"答案",我只是无法在评论中容纳所有这些内容。如果你澄清这个问题,我会删除它。希望我不是唯一一个对此感到困惑的人。

$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} .