2016-09-06 3 views
-2

В моем проекте Laravel я пытаюсь добавить, если условия, все работает, но когда я пытаюсь проверить if(true == true) как строку, она терпит неудачу.PHP, если условие в строке

Это строка: true && true && true && true

Кроме того, если бы я попробовал: true == false && true == false && true == true && true == true

if($this->checkConditions($c_operator, $c_value, $c_value_given)) { 
    $status = 'true'; 
} else { 
    $status = 'false'; 
} 

if(empty($run[$run_id]['query'])) { 
    $run[$run_id]['query'] = ''.$status.' '.$rule->connection; 
} else { 
    $run[$run_id]['query'] .= ' '.$status.' '.$rule->connection; 
} 

Окончательный ответ функция

if($r['query']) { 
    dump($r['query']); 
} else { 
    dump('error - '.$r['query']); 
} 

Он будет всегда сбрасывать dump($r['query']);

Я также попытался eval() функция, но это не сработал.

Возможно, кто-то знает, возможно ли это.

+0

... какой? Не могли бы вы показать нам фактический код вместо вашего псевдокода? – Epodax

+0

Просьба предоставить более конкретную информацию об этой проблеме. – aslawin

+0

Что ты ... ты пытаешься сделать? Вы проверяете, является ли 'bool true'' bool false', 2 раза. То же самое с 'bool true' является' bool true' –

ответ

4

Вы не можете оценить строку как php, как это. Есть функция eval() (документы: http://php.net/manual/en/function.eval.php), но я должен подчеркнуть, что это, как правило, абсолютно ужасная идея.

Непустая строка в php оценивает значение true. Вот почему ваш код всегда выгружает строку, даже если она содержит логическую логику.

Edit: Внимайте цитируемую цитату из комментариев тех Документов

Если Eval() есть ответ, вы почти наверняка попросив неправильный вопрос. - Расмус Лердорф, BDFL РНР

+0

Можно ли это сделать: 'if ($ array ['value1'] && $ array ['value2'] || $ array ['value3'])' если данные находятся в массиве? И можно добавить '&&' и '||' в переменную, чтобы условие if было переменным? –

+0

Должно быть, да. Я не пробовал, так как считаю, что это очень плохая практика. –

0

Если вы делаете, если со строкой, как это:

if($string) 
{ 
    //...do something 
} 
else 
{ 
    //... do other thing 
} 

и если строка не пустая и не равна "0" или "null" он всегда будет идти в true части от if..else строительство.

Смежные вопросы