синтаксическая ошибка, неожиданный «if» (T_IF)

Я думаю, что слишком долго смотрел на это, и теперь я не могу определить проблему.

Может кто-то любезно указать, где это происходит неправильно?

Ошибка:

Parse error: syntax error, unexpected 'if' (T_IF) in /Applications/MAMP/htdocs/mipbi/includes/classes/html.php on line 11 

Код:

 public static function textbox($name, $maxlength=''){ return "<input type='text' id='$name' name='$name' maxlength='$maxlength' value='". if (isset($_POST[$name])) { echo $name; } ."' >"; } 

Ошибка генерируется в строке оператора if.

Вы не можете использовать такие утверждения.

Чтобы сделать то, что вы хотите достичь, вам нужно будет сделать это:

 public static function textbox($name, $maxlength=''){ return "<input type='text' id='$name' name='$name' maxlength='$maxlength' value='".(isset($_POST[$name]) ? $name : '')."' >"; } 

попробуйте так:

 public static function textbox($name, $maxlength=''){ return "<input type='text' id='".$name."' name='".$name."' maxlength='".$maxlength."' value='".( (isset($_POST[$name]) ? $name:'')."' >"; } 

Вы не можете использовать выражения if таким образом. Используйте тернарный оператор для этой цели или перед тем, как выполнить конкатенацию, ваша переменная сделана заранее.

 public static function textbox($name, $maxlength=''){ return "<input type='text' id='$name' name='$name' maxlength='$maxlength' value='". (isset($_POST[$name]) ? $name : '')."' >"; } 

Альтернатива:

 public static function textbox($name, $maxlength='') { if( !isset($_POST[$name] ) { $myname = $name; } else { $myname = ''; } return "<input type='text' id='$name' name='$name' maxlength='$maxlength' value='". $myname ."' >"; } 
 public static function textbox($name, $maxlength=''){ return "<input type='text' id='$name' name='$name' maxlength='$maxlength' value='". if (isset($_POST[$name])) { echo $name; } ."' >"; } 

должно быть:

 public static function textbox($name, $maxlength=''){ $ret = "<input type='text' id='$name' name='$name' maxlength='$maxlength' value='"; if (isset($_POST[$name])) { $ret .= $name; } return $ret . "' >"; } 

Вы не можете использовать функцию if внутри строки перенастроенного значения. Я бы построил строку, которую вы хотите вернуть, и верните ее. В моем примере возвращаемая строка – $out . Даже если выше работало, это легче читать и поддерживать.

 $out= "<input type='text' id='$name' name='$name' maxlength='$maxlength' value='"; if (isset($_POST[$name])) { $out.= $name; } $out .='" >"; return $out;