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