2012-02-19 79 views
0

我想调用一个关联数组,我很困惑为什么这样做不起作用。关联数组显示不工作

如果我print_r($test);它显示以下内容:

Array(
[e7a36fadf2410205f0768da1b61156d9] => Array(
     [rowid] => e7a36fadf2410205f0768da1b61156d9 
     [id] => 3 
     [qty] => 1 
     [price] => 20 
     [name] => test 
     [options] => Array(
       [permName] => large 
      ) 
     [subtotal] => 20 
    ) 
) 

,但如果我这样做$test[0]["rowid"];它提供了以下错误信息:未定义抵消:0

我还是一个PHP新手,但我得从什么了解到阵列到目前为止这应该工作。有任何想法吗?

感谢

回答

3

你的阵列是联想这样$test[0]不存在。

$test['e7a36fadf2410205f0768da1b61156d9']['rowid'] 

如果你想获得的第一要素,而不引用键就可以使用reset($test)

$first_element = reset($test); 
$first_element['row_id']; 

两个例子功能相同。

+0

哈哈,没有,在你原来的答案,你可以安全我很少罢工在键盘上。他总是可以通过'key()'来引用密钥,我认为值得一提。无论如何+1。 – Vyktor 2012-02-19 01:21:35

+0

如果这是一个愚蠢的问题,我很抱歉,但我的印象是,即使在关联数组中,也可以使用0,1,2。说我错了是否安全? – Claremont 2012-02-19 01:23:13

+0

@Claremont更正,不能使用整数值访问关联数组的第N个值。这是例外,如果你自己设置它(即'array('foo'=>'bar',0 =>'myVar')')。如果你真的想要你可以通过使用'$ test = array_values($ test);'来转储键并强制重新编号。然后你可以访问'$ test [0]','$ test [1]'等等 – 2012-02-19 01:33:02

1

您的outter数组似乎有“e7a36fadf2410205f0768da1b61156d9”这个关键字 - 它的数字没有编入索引。

所以,你应该用

$test["e7a36fadf2410205f0768da1b61156d9"]["rowid"] 

您也可以使用array_keys,如果你想找出第一个非数字键是什么

0

你要么可以使用键$test['e7a36fadf2410205f0768da1b61156d9']['rowid'] as [Mike B suggested][1]. Or get first element of array with [复位()`] 2

$element = reset($test); 
$element['rowid']; 

或者使用array_keys()如果以后需要用这些密钥的工作(你总是可以得到C ^与key() urrent键):

$keys = array_keys($test); 
$test[ $keys[0]]['rowid']; 

如果你需要浏览测试中的所有记录只需使用foreach

foreach($test as $key => $item){ 
    $item['rowid']; 
}