【问题标题】:PHP's square brackets: when to put quotes and when not?PHP方括号:什么时候加引号,什么时候不加引号?
【发布时间】:2012-09-02 05:19:12
【问题描述】:
<html>
<head><title></title></head>
<body>
<?php
if (isset ($_POST['posted'])) {
if ($_POST['question1'] == "Lisbon") {
  echo "You are correct, $_POST[question1] is the right answer<hr>";
}

if ($_POST['question1'] != "Lisbon") {
  echo "You are incorrect, $_POST[question1] is not. the right answer<hr>";
}
}
?>
<form method="POST" action="quiz.php">
<input type="hidden" name="posted" value="true">
What is the capital of Portugal?
<br>
<br>
<input name=''question1" type=''radio" value=''Porto''>
Porto
<br>
<input name=''question1" type="radio" value=''Lisbon''>
Lisbon
<br>
<input name="question1" type="radio" value=''Madrid''>
Madrid
<br>
<br>
<input type=''submit''>
</form>
</body>
</html>

这是整个部分,它来自 PDF。但问题是,他们没有说明为什么他们在 if 语句中使用 question1 为 ' ' 而在 echo 语句中没有引号。

简而言之:为什么 $_POST['question1'] 在 if 语句中有 ' ' 以及为什么 $_POST[question1] 在 echo 语句中没有。它们是同一个变量。 谢谢。

【问题讨论】:

  • 对于数组值,键可以是字符串(带引号)或数字。对于在双引号字符串中写入数组值,不需要引号。请参阅php.net/string(向下滚动到“变量解析”)。
  • 不相关,但看起来你的一些属性引号搞砸了,使用''(两个单引号)而不是"(一个双引号)。不确定这只是您的帖子中的错误还是您的实际代码中的错误,但您可能想检查一下。

标签: php variables post quotes brackets


【解决方案1】:

总是使用引号(用于字符串键),除非在双引号字符串中。请参阅手册的the string parsing section

$juices = array("apple", "orange", "koolaid1" => "purple");

echo "He drank some $juices[0] juice.".PHP_EOL;
echo "He drank some $juices[1] juice.".PHP_EOL;
echo "He drank some juice made of $juice[0]s.".PHP_EOL; // Won't work
echo "He drank some $juices[koolaid1] juice.".PHP_EOL;

【讨论】:

  • 我实际上不知道$juices[koolaid1] 在这种情况下是有效的。看起来很草率,好像不太对劲。我个人很少使用双引号,除非我需要控制字符或其他东西。
  • $juice = $juices[0]
  • @Wesley,我同意它看起来很糟糕。 PHP 有特殊的插值规则。我更喜欢{$juices['koolaid1']} 或者完全避免使用这种语法。
  • 是的,我相信完全避免这种语法通常是最好的。就像在这种情况下,他们没有逃避发布数据。为此,您必须连接或准备另一个变量。
【解决方案2】:

数组键的字符是文字​​,所以文本应该有单引号。整数键不应该有引号。

以下是更详细的信息:

  • 当数组键以字母字符开头时,PHP 将“理解”如果您没有放单引号,那么您的意思是放单引号。所以$var[key] 将被解释为$var['key']
  • 在双引号字符串中,用大括号括住数组变量以避免出现问题。这也适用于 HEREDOCS! echo "Your ID is {$user['id']}."
  • 您可以使用双引号,但建议不要使用,除非您正在做变量插值,即$var["someKey$num"]。即使在这种情况下,最好使用$var['someKey'.$num]$var["someKey{$num}"]

【讨论】:

    猜你喜欢
    • 2018-10-13
    • 2020-01-09
    相关资源
    最近更新 更多