2014-07-16 71 views
0

我有一個查詢從數據庫返回數據並將數據存儲在名爲$array的數組中。在關聯對象數組中打印數組鍵

使用print_r($array)我收到這樣的數據:

Array 
(
    [0] => stdClass Object 
     (
      [Item1] => 1 
      [Item2] => 1 
      [Item3] => 1 
      [Item4] => 'Az' 
      [Item5] => 222 
      [Item6] => 223 
      [Item7] => 21 
      [Item8] => 22 
     ) 
) 

我發現我可以Item1返回鍵Item8使用:

foreach ($array[0] as $key => $a){ 
    echo '<pre>', $key, '</pre>'; 
} 

不過,我只希望從返回Item4到數組的末尾。 (除去前3項)

注意查詢有時會返回多行即$array[0]$array[1]$array[0]會一直存在,如果有一個結果。我只需要從數組中獲得密鑰一次,因爲我想將它們用作顯示在表中的列標題。

我更喜歡foreach()情況,因爲我只想輸出儘可能多的列如同在場。

我試圖尋找array_slice(),但我似乎無法得到它的工作,我的努力顯示如下:

$sliced = array_slice($prices[0], 3, $preserve_keys = true); 
foreach ($sliced as $key => $value){ 
    echo '<pre>'.$key.'</pre>'; 
} 

回答

1

到您問題的解決方案奠定了更深的比你正在試圖解決這個問題。

如果DB查詢返回數組的索引1..10但你只想從指數4..10 那麼你真的需要是改變DB查詢只返回這些列中顯示的數據4..10。

所以基本上,而不是執行這個查詢:

SELECT * FROM table1 

你需要執行查詢這樣的:

SELECT col4, col5, col6, col7, col8, col9, col10 
FROM table1 
+1

那麼這是我第一次提出查詢時犯的一個愚蠢的錯誤,我很高興你指出了這一點 – Ilyas

1

至於你提到「我寧願一個foreach解決方案... 「,你可以簡單地增加一個計數器,並沒有輸出任何東西,直到計數器達到設定值:

$count = 0 
foreach ($array[0] as $key => $a){ 
    $count++; 
    if($count > 3){ 
    echo '<pre>', $key, '</pre>'; 
    } 
} 
+0

同樣有效,我喜歡 – Ilyas

1

將您stdClass對象轉換成數組,並使用array_slice

$neededItems = array_slice((array)$array[0], 4, null, true); 
+0

作品正是我想要的思維!非常感謝 – Ilyas

+0

@亞當,歡迎您!如果他幫助你,請不要忘記費率答案 – maximkou