2013-08-21 67 views
2

我跑過了這個WordPress插件。

$stuff = $wpdb->get_results(" assume valid database query here "); 
foreach ($stuff as $cur) 
    ${$cur->type}[] = $cur->name; 

$stuff將是包含更多數據庫行對象的對象。這些數據庫行將具有列'id','type''name''type'列將包含以下三個字符串中的一個:'file','url''code'

看起來這個代碼片段可能會爲名爲$file,$url和/或$code的陣列創建或添加新元素。但是,我不熟悉$ {$}語法的這種用法;我只在雙引號字符串中看到它,以避免解析問題。

我正確的分析了這段代碼嗎?我在哪裏可以瞭解更多關於$ {$}語法的用法?

在雙引號字符串中有一個question about the ${ } syntax。我明白這個用法,但我特意詢問{}括號內的第二個$字符。

+0

'{$ cur-> type}'強制這個位先解析,確保'$$ cur'不是含義,也不是'$ cur-> type []'。如果您想了解更多關於整體方法的信息,請查看[變量變量](https://duckduckgo.com/?q=php+variable+variables) - 這是一種編寫表達式的方式,其中變量名稱本身可以更改。 – halfer

+0

@ j08691:這個重複實際上是關於不同的東西。並非完全不同,但在這裏並非如此。 – hakre

+3

http://www.php.net/manual/en/language.variables.variable.php –

回答

2

考慮

$foo = 42; 
$a = 'foo'; 
echo $$a; // Prints 42 

那被稱爲變量變量,因爲變量的名稱是在運行時確定的。 但$$ a [1]與$ {$ a [1]}相同或與{$$ a} [1]相同?括號避免了含糊不清,就像他們在處理數學運算符優先級時一樣。

4

這是一個「變量變量」。在這種情況下,它指的是$cur->type中名爲whatever的變量中的數組。

個人而言,我討厭這一點,更希望做到這一點:

$someArray[$cur->type][] = $cur->name; 
+2

不,變量是PHP中的其他東西。這是'$$'在開頭的事情:http://php.net/manual/en/language.variables.variable.php – hakre

+1

@hakre在這種情況下它是變量變量,但是最後一個變量名是以複雜的形式。 –

+0

@ dev-null-dweller:我不這麼認爲。屬性訪問不僅僅是一個變量,而是變量變量中的第二個變量。我會說這更像[字符串分析](http://www.php.net/language.types.string.php#language.types.string.parsing),然後像[變量變量](http:// php.net/language.variables.variable.php)。 – hakre

2

那些大括號打開一個字符串上下文計算表達式有-中,然後被用作變量名的字符串。

例如,如果你想要寫出來與大家不可能在正常的PHP寫一個名稱的變量:

echo $; 

具有空名稱的變量。 PHP會給你一個語法錯誤。但是,您可以使用大括號創建此類變量:

${''} = 'hello'; 
echo ${''}; # prints "hello" 

這是一個空名稱的變量。

${$cur->type}[] 
| ### 1. ###| 
`---- 2. ---´ 

這可以讓你說清楚其中數組是:如果你想先評估變量名這可能是有益的。在變量中由$cur->type命名爲

我可能無法解釋它真的很好,這是一個博客帖子我記得那麼它可能是值得的題目

相關問題