Intereting Posts
Загрузка одного файла изображения на FTP с помощью PHP Ошибка ODBC в PHP: «Нет кортежей, доступных в этом индексе результата» простой массив в ассоциативный массив, основанный на «дереве каталогов», как значения первого Передача нескольких переменных на другую страницу в URL-адресе Как определить, что PHP-скрипт находится в фазе завершения? Google in-app payments: как обращаться с обратной почтой JWT Google Обзор каталога рекурсивно и получить имя файла PHP: Как я могу использовать / использовать метод в своем классе? XPATH – возвращает одно значение вместо массива php Yii с использованием переменной с условием IN Добавьте заголовок к каждому запросу с использованием .htaccess Неудачные запросы по длине в результате теста загрузки ApacheBench Нужна помощь с проблемами JSON Получить ближайшую дату из таблицы MySQL Выделите фоновые рисунки кода с помощью Vim

Динамический доступ к элементу массива свойств объекта в PHP

У меня есть объект, который я хотел бы динамически взаимодействовать. Я хотел бы переименовать game1_team1 в:

$default_value = $individual_match->field_match_game1_team1[0]['value']; 

быть game1_team2, game2_team1, game2_team2, game3_team1 и т. д. На основе цикла они находятся.

Я пытался:

 $dynamic = 'field_match_game'.$i.'_team'.$j; $default_value = $individual_match->$dynamic[0]['value']; 

но он возвращает

Неустранимая ошибка: нельзя использовать смещение строки в виде массива

Обновление. Основываясь на ответе Саула, я изменил код на:

 $default_value = $individual_match->{'field_match_game'.$i.'_team'.$j}[0]['value']; 

который избавился от Fatal error, но не возвращает значение.

 $individual_match->field_match_game1team1[0]['value'] = 'hello1'; $i = 1; $j = 1; $default_value = $individual_match->{'field_match_game'.$i.'team'.$j}[0]['value']; 

«Переименование» невозможно, если вы не создаете новое свойство и не удаляете старый. Доступ к динамическим именам следующим образом:

 $dynamic = "field_match_$i_team$j"; $default_value = $individual_match->$dynamic[0]['value']; 

Обратите внимание на $ from -> and dynamic .

Удалите и создайте пример:

 $oldProperty = "field_match_1_team1"; $newProperty = "field_match_$i_team$j"; $hold = $individual_match->$oldProperty; unset($individual_match->$oldProperty); $individual_match->$newProperty = $hold; с $oldProperty = "field_match_1_team1"; $newProperty = "field_match_$i_team$j"; $hold = $individual_match->$oldProperty; unset($individual_match->$oldProperty); $individual_match->$newProperty = $hold; 

Посмотрите на это: http://php.net/manual/en/function.get-class-vars.php Вы можете перечислить все свойства объекта в массиве и выбрать только необходимый.