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

0

Я немного новичок в мире PHP и, несмотря на мое русификационное и ручное чтение, я не могу

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

В настоящее время я делаю следующие шаги:

  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
    Вы имеете в виду: захватить («альфа»); захватить ( 'бета'); захватить ( 'гамма'); ??
  • 0
    Если у вас есть ситуация, когда вы нумеруете ряд переменных, то у вас есть ситуация, которая требует использования массива вместо
Показать ещё 4 комментария
Теги:
function
arguments

3 ответа

1
Лучший ответ

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

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

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

  • 0
    Тогда $data = grab('alpha'); echo $data['alpha_one'];
  • 0
    Полезно знать, спасибо за ответ.
0

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

function grab($argument) {
    ${$argument . "_one"} = $element -> find etc;
    ${$argument . "_two"} = $element -> find etc;
    ${$argument . "_n"}   = $element -> find etc;
}
  • 0
    $ {$ аргумент. "_one"} :-) исправить
0

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню