【问题标题】:php echo questionphp回显问题
【发布时间】:2011-03-18 15:49:00
【问题描述】:
$this->get_name = mysqli_fetch_assoc(mysqli_query($this->link,"SELECT complete_name FROM student WHERE email='$this->email'"));

mysqli_query($this->link, $this->drop_query) or die(mysql_error());

echo $this->get_name['complete_name'].  " has been marked as Left!";

当我运行它时,我得到以下信息:

“约翰已被标记为左派!”

但是当我运行时

echo ".$this->get_name['complete_name'] has been marked as Left!";

我明白了:

“数组['complete_name'] 已被标记为左!”

他们不应该打印相同的东西吗?

【问题讨论】:

    标签: mysql arrays echo


    【解决方案1】:

    第二种情况PHP:s解析器不知道变量在哪里结束,使用{}将变量封装在字符串中

    echo "{$this->get_name['complete_name']} has been marked as Left!";
    

    【讨论】:

    • 是的。没有大括号的变量替换只考虑作为标识符一部分的有效字符。使用大括号明确界定替换。
    【解决方案2】:

    如果要获取数组偏移量,请使用:

    {$this->get_name['complete_name']}
    

    使用方括号告诉 PHP 期望尽可能将整个容器用作变量。

    请参阅PHP's String Parsing 了解更多详情。作为他们示例的一部分,他们有以下示例:

    // Works, quoted keys only work using the curly brace syntax
    echo "This works: {$arr['key']}";
    

    【讨论】:

      【解决方案3】:

      每当我回显比$complete_name 更复杂的内容时,我不会将其包含在引号中:

      echo $this->get_name['complete_name'].' has been marked as Left!';
      

      我发现在处理对象和数组等时,将整个引用作为一个句子无论如何都会丢失。因此,如果您想轻松阅读引用的行,我可能会建议使用:

      $complete_name = $this->get_name['complete_name'];   # deal with the dirty stuff here 
      
      echo "$complete_name has been marked as left!";      # so this is much easier to read
      

      【讨论】:

      • 你不应该这样做。通过使用双引号和连接,您正在使 PHP 发挥双重作用。如果您要这样做,请始终对字符串使用单引号。
      猜你喜欢
      • 1970-01-01
      • 2012-10-12
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      • 2011-07-20
      • 2010-11-29
      • 1970-01-01
      相关资源
      最近更新 更多