2015-06-10 5 views
-5

Я подозреваю, что это не допустимоPHP Оценивать специальный символ для фактического vairable

Я пытаюсь фильтровать данные в соответствии с выбором пользователя ..

Вот переменная, имеющая код динамически изменяется в зависимости от вход пользователей.

Иногда переменная $ р, имеющий

$p="$line[10]=='MICRO'"; 

или

$p="$line[10]=='MICRO' || $line[10]=='NO'"; 

или

$p="$line[10]=='MBTS' || $line[10]=='MICRO' || $line[10]=='NO' || $line[10]=='ODM' && $line[9]=='HUBSITE' || $line[10]=='NO'"; 

только вещь данные р переменная $ динамически изменяется в соответствии с пользователей.

, а число внутри массива $ line - это номер столбца файла csv.

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

Здесь я использую файл CSV и в файле CSV Я фильтрации столбцов particualr с помощью указанную выше переменную.

<?php 
$circle_sheet="DETAILS.csv"; 
$f = fopen($circle_sheet, "r"); 
while (($line = fgetcsv($f)) !== false) 
{ 
    $p=eval($p); 
    if(${$p}) 
    { 
     echo "<tr>"; 
     foreach($line as $cell) 
     { 
      echo "<td style='color:white;'>" . htmlspecialchars($cell) . "</td>"; 
     }echo "</tr>\n"; 
    } 
} 
?> 

В вышеприведенном в то время как петля, если условие неверно, то $ р переменных данных имеет эхо, если блок ..

Но я получаю Синтаксическая ошибка : ошибка синтаксиса, неожиданный T_ECHO

+3

Что вы пытаетесь проверить с помощью эхо как условие? – Quentin

+2

НИКОГДА НЕ ДОПУСКАЙТЕ ПОЛЬЗОВАТЕЛЯ! – Matheno

+0

@MHakvoort, но выбор ввода статичен ... и я поставил условие, отличающее выбор пользователя в массивах diff ... так что выбор пользователя обрабатывается только одной переменной ... –

ответ

-1

Если у меня есть вопрос, то вы, можете do if (eval ("return". $ P)). Однако оценка ввода пользователем не рекомендуется. php documentation for eval

Как это:

<?php 
$circle_sheet="DETAILS.csv"; 
$f = fopen($circle_sheet, "r"); 
while (($line = fgetcsv($f)) !== false) 
{ 
    if(eval("return ".$p)) 
    { 
     echo "<tr>"; 
     foreach($line as $cell) 
     { 
      echo "<td style='color:white;'>" . htmlspecialchars($cell) . "</td>"; 
     }echo "</tr>\n"; 
    } 
} 
?> 
+0

как вернуть значение $ p ...? если условие ...? –

+0

eval ("return". $ P) возвращает true, если условия в $ p удовлетворяют false, если нет. if (eval («return». $ p)) выполнит внутреннюю часть if, если $ p выполнено. – notlisted

+0

Задача состоит в том, чтобы сделать возвращаемое значение внутри блока условий if .... может у, пожалуйста, помогите мне с кодом ...? –

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