PHP: задайте свойства массива класса со строкой в качестве имени свойства

#php #arrays #class #properties

#php #массивы #класс #свойства

Вопрос:

У меня есть класс со свойством, которое является массивом:

   class NewObject {
    public $Props = array();
  }

  $obj = new NewObject();

  $obj->Props[0] = 'a';
  $obj->Props[1] = 'b';
  

Теперь я хочу изменить значения реквизитов не напрямую, а с помощью переменной ‘propertyname’:
Это работает для свойств с одной строкой, но не для массивов, потому что ключ N интерпретируется как N-я буква СТРОКИ ‘Props’ вместо N-го значения в массиве!

   $propertyname = 'Props';

  $obj->$propertyname[0] ='c';   //doesnt work as expected, it tries to set $obj->P now, it seems
  $obj->$propertyname[1] ='d';
  

Есть какой-нибудь способ решить это?

Ответ №1:

 $obj->{$propertyname}[0] ='c';
  

Комментарии:

1. Спасибо … Я знал о почести, но только в строках с двойными кавычками, в которых вы хотите использовать переменную… никогда раньше такого не видел…