2013-02-15 42 views
0

在这个片段中$ opt是从这个标记创建一个XPath节点:PHP关联数组键没有被设置

<option name="all">1</option> 

//... 
$this->permissions = array(); 
$key = $opt['name']; 
$value = $opt[0]; 
echo $key . "=" . $value; 
$this->permissions[$key] = $value; 
echo $this->permissions['all']; 
//... 

从这些echo语句,我得到以下回报:

all=1 

哪个从第一个回声预期,但第二个没有打印。当我这样做: echo array_keys($ this-> permissions);

我得到: 阵列

当我这样做: 的var_dump($这个 - >权限);

我得到: 阵列(0){}

当我做: 的print_r($这个 - >权限); 或者: print_r(array_keys($ this-> permissions));

我得到: 阵列()

任何想法,任何人吗?为什么键回到阵列?缺少什么我在这里...

+0

做一个'的print_r($这个 - >权限);'和回来后的结果。 – Aborted 2013-02-15 22:30:41

+5

array_keys的结果是一个数组。你很惊讶?阅读文档。 – 2013-02-15 22:31:13

+0

[array_keys()](http://php.net/manual/en/function.array-keys.php) - >返回值:返回输入中所有键的**数组**。 **阅读文档请** – HamZa 2013-02-15 22:38:03

回答

0

尝试

var_dump($opt); 

和后回结果

+0

object(SimpleXMLElement)#10(1){[“@attributes”] => array(1){[“name”] => string(3)“all”}} – 2013-02-15 23:05:57

+0

$ opt有问题,因为我可以在这里看不到“1”值。你应该在这个var转储中有类似“[0] int(1)1”的东西。你的代码在哪里var_dump? – JeanP 2013-02-15 23:29:32

+0

我也注意到,但在echo语句中,它回到了预期的“all = 1”我在xml文件中添加了另一个节点,其中'some'作为名称,另外2个作为标记,我得到了all = 1some = 2也如预期那样。我只是将代码切换到... $ key = $ opt ['name']; $ value = $ opt ['value']; echo $ key。 “=”。 $值; $ this-> permissions [$ key] = $ value; echo $ this-> permissions ['all']; echo $ this-> permissions ['some']; 和xml节点现在是

0

尝试变种转储这样的:

var_dump(array_keys($this->permissions)); 

看到你的阵列的结构。

+0

谢谢,我把结果放在原文中。 – 2013-02-15 22:50:41