2009-12-23 111 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); 
    } 
    } 
?>