динамический $$value свойства класса в php

IIUC вам нужно выбрать все Y == 1, затем, если они не продолжаются, вы хотите, чтобы они были в другой группе, здесь мы используем cumsum

ua_dates.loc[df.Y==1,'Date'].groupby(ua_dates.Y.eq(0).cumsum()).agg(['min','max']).values.tolist()
Out[713]: [['23/02/2019', '24/02/2019'], ['19/02/2019', '21/02/2019']]
38
задан Cameron A. Ellis 12 May 2009 в 18:45
поделиться

6 ответов

Вам нужно использовать только один $ при обращении к переменной-члену объекта с помощью строковой переменной.

echo $this->$string;
67
ответ дан 27 November 2019 в 03:06
поделиться

Как уже упоминали другие, $ this -> $ string должно помочь.

Однако этот

$this->$$string;

фактически оценит строку и снова оценит результат этого.

$foo = 'bar';
$bar = 'foobar';
echo $$foo; //-> $'bar' -> 'foobar'
19
ответ дан 27 November 2019 в 03:06
поделиться

вы были очень близки. вы только что добавили 1 дополнительный знак $.

public function foobar($string)
{
     echo $this->$string; //will work
}
3
ответ дан 27 November 2019 в 03:06
поделиться
echo $this->$string; //should work

$$ string вам понадобится только при доступе к локальной переменной, у которой в строке хранится только ее имя. Поскольку обычно в классе вы обращаетесь к нему как $ obj-> property , вам нужно добавить только один $ .

0
ответ дан 27 November 2019 в 03:06
поделиться

Чтобы запомнить точный синтаксис, имейте в виду, что вы используете на $ больше, чем обычно. Поскольку вы используете $ object-> property для доступа к свойству объекта, тогда динамический доступ осуществляется с помощью $ object -> $ property_name .

0
ответ дан 27 November 2019 в 03:06
поделиться

Если вы хотите использовать значение свойства для получения имени свойства, вам нужно использовать скобки "{":

$this->{$this->myvar} = $value;

Даже если они ' Что касается объектов, то они работают:

$this->{$this->myobjname}->somemethod();
31
ответ дан 27 November 2019 в 03:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: