Переменная класса вызова PHP со строкой и массивом

Обычно вы можете установить переменную php для вызова функции с использованием строки. Например:

$myVariable = 'myClassVariable';
$this->$myVariable; // works!

Однако как передать строку, если задействован массив? (см. ниже)

$this->someVariable['my_field']; // works
$callName = 'someVariable["my_field"]';
$this->$callName; // doesn't work

Я также пробовал $callName = ${'someVariable["my_field"]'}, и это тоже не работает.

2 отдельных примера выше, я изменил формулировку, чтобы сделать образцы более понятными.

friek108 30.03.2018 13:48
$callName = $someVariable["my_field"];
u_mulder 30.03.2018 13:49

Нет - это дает недопустимую ошибку смещения строки ..: s

friek108 30.03.2018 13:51

Кажется, что в ваших примерах кода нет ничего общего с функциями. Думаю, я понимаю, что вы пытаетесь, но PHP работает не так. Строка, содержащая квадратные скобки, не может затем использоваться для определения элементов массива (без использования eval, но тогда у вас возникнут дополнительные проблемы)

iainn 30.03.2018 14:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
53
1

Ответы 1

Вы обрабатываете массив как строку. Это никогда не сработает. множество никогда не может быть нить и наоборот.

Это вызовет функцию someFunction и вернет Foo.

$this->someVariable['my_field'] = 'someFunction';
$this->{$this->someVariable["my_field"]}();

public function someFunction() {
    return 'Foo';
}

Другие вопросы по теме