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