Использование аргумента текста в функции PHP

Я немного новичок в мире PHP и, несмотря на мои поиски в Google и чтение вручную, я не могу

В настоящее время я (этично!) Очищаю веб-сайт, который имеет несколько различных категорий (давайте назовем их «альфа», «бета», «гамма»).

В настоящее время я иду через эти шаги:

  1. Загрузите файл
  2. Найдите правильную таблицу (php_siomple_dom)
  3. Затем пройдитесь по элементам, чтобы получить информацию.

    $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;
    
  4. Все таблицы одинаковы для альфа, бета, гамма; таким образом, я хотел бы написать функцию, но я борюсь с тем, как включить имя аргумента в переменные, которые я создаю. Это была моя идея, но она не работает.

    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-мастер мог пролить свет на это. Спасибо!

0

Решение

Этот код довольно бессмысленный. $argument . "_one" переменная будет существовать ТОЛЬКО внутри функции, и будет уничтожен, когда функция вернется. Вы, вероятно, хотите что-то вроде этого:

function grab($argument) {
$data = array();
$data[$argument . "_one"] = ...
$data[$argument . "_two"] = ...
etc...
return ($data);
}

По сути: создайте массив с динамическими именами ключей на основе вашего $argument, затем верните весь массив в вызывающий контекст.

1

Другие решения

$ аргумент существует только внутри области действия функции. Это не будет иметь никакого эффекта вне этой функции. Если вы используете класс, вы можете создать все возможные переменные (не рекомендуется) и вызвать:

$this->{$argument . "_one"} = ...

или сохраните их в переменной массива (лучший способ):

$this->myArray[$argument . '_one'] = ...
0

Просто сделай это:

function grab($argument) {
${$argument . "_one"} = $element -> find etc;
${$argument . "_two"} = $element -> find etc;
${$argument . "_n"}   = $element -> find etc;
}
0
По вопросам рекламы [email protected]