2017-01-24 133 views
1

好提領,所以我有點好奇以下字符串在字符串字面

$string = "Hello world!"; 

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

如果我嘗試呼應以下... echo "$string";它的工作。但是這個echo "$files->file->name";它不起作用。爲什麼這兩個都是字符串。我知道一個是一個對象,另一個是一個字符串,但爲什麼對象中的字符串不能被刪除。有人可以解釋嗎?

回答

2

這裏沒有關於取消引用的內容。這是關於PHP的理解你想要打印什麼。

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

還是要打印$files->name財產和字符串'->name'

還是要打印name屬性的值或file$files屬性的屬性?

正確的代碼是

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

或者只是:

echo $files->file->name; 

更多信息here

1

在解析你的字符串,PHP不知道什麼是你的變量的一部分,什麼ISN」 t(它會在第一個-處停止,因爲這不能是變量名稱的一部分......)。

可以解決使用{...}

<?php 
$string = "Hello world!"; 

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

An example.