2009-12-23 107 views
1

看來我錯過了PHP中關於數組的重要內容。PHP:在關聯數組中使用變量?

有什麼不對的:

var $condition = array('Status.name = ' => 'PUBLISHED'); 
var $paginate = array('conditions' => $condition); 

這工作得很好:

var $paginate = array('conditions' => array('Status.name = ' => 'PUBLISHED')); 
+0

你得到一個錯誤,或什麼不工作? – poke 2009-12-23 10:57:45

+0

你忘記描述代碼的上下文了;它可以很容易地從你寫的內容中猜出來,但它仍然是一個猜測。如果您明確表示您是否在報告班級代碼,那本來會更好;不同的是,你會得到很多答案,告訴你代碼不正確。 – kiamlaluno 2009-12-23 11:11:08

回答

3

爲什麼var關鍵字?通常你不需要這個 - 除非這些是對象上的字段?如果是這樣,你將需要使用$ this來引用它們。其中一個下面的例子應該爲你工作:

$condition = array('Status.name = ' => 'PUBLISHED'); 
$paginate = array('conditions' => $condition); 

var $condition = array('Status.name = ' => 'PUBLISHED'); 
var $paginate = array('conditions' => $this->condition); 

沒有看到更多的代碼,這是我很難用哪一個適用於您肯定地說和/或如果這將解決您的問題。希望它指出你在正確的方向。

1

var關鍵字用於聲明類成員變量,不適用於非類變量。
PHP中支持var關鍵字,雖然不推薦使用。

但對於VAR關鍵詞,一切正常,我們看到下面的,當我們轉儲PAGINATE陣列:

array(1) { 
    ["conditions"]=> 
    array(1) { 
    ["Status.name = "]=> 
    string(9) "PUBLISHED" 
    } 
} 
0

對於我來說,這兩個不工作。但是,當我從變量中刪除var關鍵字時,兩者都可以很好地工作。 Var關鍵字用於php4。

3

var部分表明我正在定義一個類。在這種情況下,你不能用另一個的內容初始化一個對象變量;你只能用常量(包括數組)來初始化它們。

<?php 
    class test { 
    var $test1 = array('test_11' => 10); 
    var $test2 = array('test21' => $test1); // Error 
    } 
?> 

如果您需要初始化另一個變量的內容,請使用構造函數。

<?php 
    class test { 
    function test() { 
     $this->test1 = array('test_11' => 10); 
     $this->test2 = array('test21' => $this->test1); 
    } 
    } 
?>