2015-12-22 2 views
0

Я хочу создать строку Get Url с выражением if.PHP Получить Url String Если заявление

Вот мой код:

$value = $_GET['value']; 
$fullname = "John Doe"; 
$email = "[email protected]"; 

echo "value: " . $value; 

if($value = "fullname") 
    echo "fullname: " . $fullname; 
elseif($value = "email") 
    echo "email: " . $email; 
else 
    echo "fullname: " . $fullname; 
    echo "<br>"; 
    echo "email: " . $email; 

Он возвращает как FULLNAME и по электронной почте каждый раз, даже если я вхожу только FULLNAME или значение электронной почты. Что я делаю не так? Благодаря

+0

Это всегда будет отражать последние две строки, потому что вы не используете скобки, см. ['PHP if-manual'] (http://php.net/manual/en/control-structures.if.php). Вы также присваиваете 'fullname'' $ value', потому что вы используете только один знак равенства ('='), который присваивает вместо двух ('=='), которые сравниваются. – Qirel

+0

Спасибо. Очень ценю помощь. Есть ли способ избежать сообщения об ошибке из строки 3 ($ value = $ _GET ['value'] без isset? Каждый раз, когда я реализую isset, независимо от введенного значения, он всегда возвращает как полное имя, так и адрес электронной почты. – donfontaine12

+0

You может использовать tenary-operator: '$ value = (isset ($ _ GET ['value'])? $ _GET ['value']: null);' - это как 'if/else', просто более компактный. [Как написать PHP-тернарный оператор] (http://stackoverflow.com/questions/17981723/how-to-write-a-php-ternary-operator) – Qirel

ответ

0

Один оператор = является оператором присваивания. Что вы делаете, установите $value на номер "fullname". То, что вы хотите, это оператор равенства == или тождественный оператор === так что вы в конечном итоге с

if ($value === "fullname") 
    // Do stuff 

Для получения дополнительной информации об операторах в PHP: http://php.net/manual/en/language.operators.comparison.php

Edit: Чтобы ответить на ваш комментарий

Спасибо. Очень ценю помощь. Есть ли способ избежать сообщения об ошибке из строки 3 ($ value = $ _GET ['value'] без isset? Каждый раз, когда я реализую isset, независимо от введенного значения, он всегда возвращает как полное имя, так и адрес электронной почты

Вы можете сделать что-то вроде:

if ((!isset($fullname) && !isset($email)) || !isset($value)) { 
    die("No name or email was included in the request"); 
} 

$value = $_GET['value']; 
$fullname = "John Doe"; 
$email = "[email protected]"; 

echo "value: " . $value; 

if ($value = "fullname") { 
    echo "fullname: " . $fullname; 
} elseif($value = "email") { 
    echo "email: " . $email; 
} else { 
    echo "fullname: " . $fullname; 
    echo "<br>"; 
    echo "email: " . $email; 
} 
+0

Спасибо. Очень ценю помощь. Есть ли способ избежать сообщения об ошибке из строки 3 ($ value = $ _GET ['value'] без isset? Каждый раз, когда я реализую isset, независимо от введенного значения, он всегда возвращает как полное имя, так и адрес электронной почты. – donfontaine12

+0

@ donfontaine12 отредактировал – 3ocene

+0

Еще раз спасибо. Не могу дождаться, чтобы попробовать. – donfontaine12

2

Вы назначаете значения вместо сравнения их:

if($value = "fullname") 

Это всегда true.

Вам нужно что-то вроде:

if($value === "fullname") 

Это относится к вашей elseif, как хорошо, хотя право не вы никогда не достигнете этого.

Вы также должны использовать скобки для маркировки блоков, которые должны выполняться в каждом разделе, если это более 1 строки (хотя я бы предложил всегда делать это ...).

+1

Спасибо. . Есть ли способ избежать сообщения об ошибке из строки 3 ($ value = $ _GET ['value'] без isset?Каждый раз, когда я реализую isset, независимо от введенного значения, он всегда возвращает как полное имя, так и адрес электронной почты. – donfontaine12

1

Вашего окончания «еще» нужна скобка, чтобы держать две последние строки из выполняющихся каждый раз, когда (и с помощью одного знака равенства всегда будут делать операцию присваивания и быть. оценивается как «истина»)

if($value == "fullname") { 
    echo "fullname: " . $fullname; 
} 
else if($value == "email") { 
    echo "email: " . $email; 
} 
else { 
    echo "fullname: " . $fullname; 
    echo "<br>"; 
    echo "email: " . $email; 
} 
+0

Благодарим за помощь. Есть ли способ избежать сообщения об ошибке из строки 3 ($ value = $ _GET ['value'] без isset? Каждый раз, когда я реализую isset, независимо от введенного значения, он всегда возвращает как полное имя, так и адрес электронной почты. – donfontaine12