#php #arrays #object #replace
#php #массивы #объект #заменить
Вопрос:
В приведенном ниже массиве / объекте, как бы я повторил его и заменил, например, SIEcat7 на test и SIEcat8 на test2. Пытаюсь ниже, но возникают проблемы с доступом к нужному уровню
Код
foreach($data as $i => $item) {
if ($i[0] = "SIEcat7") {
$i[0] = "test";
}
}
Объект
stdClass Object
(
[SIEcat7] => stdClass Object
(
[text] => test1
[amount] => 1 000.00
)
[SIEcat8] => stdClass Object
(
[text] => test2
[amount] => 0.00
)
)
чтобы стать
stdClass Object
(
[test1] => stdClass Object
(
[text] => test1
[amount] => 1 000.00
)
[test2] => stdClass Object
(
[text] => test2
[amount] => 0.00
)
)
Комментарии:
1. Какова цель цикла? Если это просто объект с двумя свойствами, вам не нужен цикл для него
2.
=
устанавливает переменную.==
сравнивает его. В данный момент вы устанавливаете переменную в своем if-выражении.3. пожалуйста, смотрите обновленный вопрос, это не только 2, просто используется 2 в качестве примера
4. Что не так с ответом @ FrankerZ?
Ответ №1:
Вы должны просто получить доступ, SIEcat7
используя $i
, а не $i[0]
поскольку $i
это не массив.
Кроме того, чтобы получить доступ к свойствам класса, вы должны просто обращаться к ним напрямую:
$data->SIEcat7
Чтобы заменить свойство SIEcat7
на test
, это так просто, как:
$data->test = $data->SIEcat7;
unset($data->SIEcat7);