【问题标题】:Build dynamic array in PHP在 PHP 中构建动态数组
【发布时间】:2012-01-30 20:04:24
【问题描述】:

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

我有:

$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 或 '{' 或 '$' 在 homework1-a-1.php 上 第 10 行

我能做些什么来解决它?

【问题讨论】:

  • 看起来像一个简单的语法错误。看不到第 10 行,所以不知道。
  • 我将第 10 行放入我的编辑中
  • 对象属性必须以字符开头。但是,我不明白你想要实现什么,因为看起来你把对象和数组混在一起了。
  • 你能做一个print_r($t); 并粘贴输出吗?
  • 它是你需要构造对象的任务的一部分吗?如果是这样,在进入将其转换为数组的第二部分之前,请检查您是否已正确构建它。

标签: php syntax-error


【解决方案1】:

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

你有以下:

  • $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 毫无意义。

抱歉,这是一个“答案”,我无法将所有这些都放在评论中。如果您澄清问题,我将删除它。希望我不是唯一对此感到困惑的人。

【讨论】:

    【解决方案2】:
    $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}.

    【讨论】:

    • 重点是这是一个家庭作业,给定对象,从它构建一个数组。
    • @Truth:对不起,这个问题有点令人困惑。 $t 的“代码”毫无意义,我不知道 $t 的样子。然后他说他想要某种格式的$t(你说是给定的),然后在他的循环中,他引用$arr。所以,我不确定他想要什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 2020-12-05
    • 2020-06-17
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多