2012-02-19 80 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']; 
}