字符串文字中的字符串解除引用

时间:2017-01-24 19:34:35

标签: php

好的,所以我对以下内容有点好奇

$string = "Hello world!";

$files = (object)[
    "file" => (object)[
        "name" => "filename.txt",
        "tmp_name" => "tempfile.txt"
    ]
];

如果我试图回应以下内容...... echo "$string";它确实有效。但是这echo "$files->file->name";它不起作用。为什么两者都是字符串。我理解一个是一个对象,另一个是字符串,但为什么对象中的字符串不能被解析。有人可以解释一下吗?

2 个答案:

答案 0 :(得分:2)

这里没有解除引用的任何内容。这是关于php理解你想要打印的内容。

是否要打印$files对象和字符串'->file->name'

或者您要打印$files->name属性和字符串'->name'

或者您是否要打印name属性的file属性或$files属性的值?

正确的代码是

echo "{$files->file->name}";

或者只是:

echo $files->file->name;

更多信息here

答案 1 :(得分:1)

在解析你的字符串时,php不知道你的变量是什么,什么不是(它会在第一个-停止,因为它不能成为变量名的一部分......)。

您可以使用{...}

解决这个问题
<?php
$string = "Hello world!";

$files = (object)[
    "file" => (object)[
        "name" => "filename.txt",
        "tmp_name" => "tempfile.txt"
    ]
];
echo "{$files->file->name}";

An example.