Заменить значение в массиве / объекте php

#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);