Я немного новичок в мире PHP и, несмотря на мои поиски в Google и чтение вручную, я не могу
В настоящее время я (этично!) Очищаю веб-сайт, который имеет несколько различных категорий (давайте назовем их «альфа», «бета», «гамма»).
В настоящее время я иду через эти шаги:
Затем пройдитесь по элементам, чтобы получить информацию.
$alpha_one = $element -> find etc;
$alpha_two = $element -> find etc;
$alpha_n = $element -> find etc;
$beta_one = $element -> find etc;
$beta _two = $element -> find etc;
$beta_n = $element -> find etc;
Все таблицы одинаковы для альфа, бета, гамма; таким образом, я хотел бы написать функцию, но я борюсь с тем, как включить имя аргумента в переменные, которые я создаю. Это была моя идея, но она не работает.
function grab($argument) {
$argument . "_one" = $element -> find etc;
$argument . "_two" = $element -> find etc;
$argument . "_n" = $element -> find etc;
}
Таким образом, я мог бы использовать:
grab('alpha');
grab('beta');
grab('gamma');
без необходимости писать код для каждой таблицы
Я изучил «магические методы», но не могу заставить его работать. Я был бы очень признателен, если бы PHP-мастер мог пролить свет на это. Спасибо!
Этот код довольно бессмысленный. $argument . "_one"
переменная будет существовать ТОЛЬКО внутри функции, и будет уничтожен, когда функция вернется. Вы, вероятно, хотите что-то вроде этого:
function grab($argument) {
$data = array();
$data[$argument . "_one"] = ...
$data[$argument . "_two"] = ...
etc...
return ($data);
}
По сути: создайте массив с динамическими именами ключей на основе вашего $argument
, затем верните весь массив в вызывающий контекст.
$ аргумент существует только внутри области действия функции. Это не будет иметь никакого эффекта вне этой функции. Если вы используете класс, вы можете создать все возможные переменные (не рекомендуется) и вызвать:
$this->{$argument . "_one"} = ...
или сохраните их в переменной массива (лучший способ):
$this->myArray[$argument . '_one'] = ...
Просто сделай это:
function grab($argument) {
${$argument . "_one"} = $element -> find etc;
${$argument . "_two"} = $element -> find etc;
${$argument . "_n"} = $element -> find etc;
}