Построение динамического массива в 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 on строка 10

Что я могу сделать, чтобы исправить это?

Ответы

Ответ 1

Ваш вопрос запутан. Вот что я понимаю:

У вас есть следующее:

  • $t, который является объектом.
  • $t->user, также объект.
  • $t->user[0]->name = 'wilson'
  • $t->user[0]->first = 'carl'

Вы говорите, что вам нужно:

  • $t->name = 'wilson'
  • $t->first = 'carl'

Вы говорите "фил" в вопросе, но данный объект $t не имеет ссылки на "фил" , поэтому я не знаю, появляется ли "фил" из воздуха, или что.

Является ли это правильным взглядом на проблему? Если это так, вам нужно прояснить это в вопросе. говоря $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}.