2014-03-06 66 views
0

當我在WordPress中運行PHP而不使用foreach時,我成功地打印了一個多維數組。當我使用foreach時,它返回一個error 500我只是想循環遍歷結果,所以我能夠選擇每個name,然後將它推送到另一個數組。多維數組Wordpress PHP MySQL查詢

如果有人能夠幫助我循環遍歷這個數組,那就太棒了!

Array 
(
    [0] => stdClass Object 
     (
      [term_taxonomy_id] => 26 
      [taxonomy] => product_brand 
      [name] => Authentic Cheese 
      [slug] => authentic-cheese 
     ) 

    [1] => stdClass Object 
     (
      [term_taxonomy_id] => 27 
      [taxonomy] => product_brand 
      [name] => Robot 
      [slug] => robot 
     ) 

) 

PHP

$q2 = "SELECT t.term_taxonomy_id, t.taxonomy, e.name, e.slug 
FROM wp_term_taxonomy t 
INNER JOIN wp_terms e ON t.term_taxonomy_id = e.term_id 
WHERE taxonomy = 'product_brand'"; 

$r2 = $wpdb->get_results($q2); 

print_r($r2); 

foreach ($r2 as $row) { 
    echo $row['name']; 
} 
+0

這不是一個二維數組,它的對象 –

+0

數組是Object'不是一個'Array' ... 作爲@EliasVanOotegem說'。 .. –

+0

請注意,您不需要使用結果集作爲對象,並且您也可以將結果作爲關聯數組的數組獲得......添加了詳細信息+鏈接到我的答案 –

回答

2

你必須在結果對象的數組。因此,使用:

foreach ($r2 as $row) { 
    echo $row->name; 
} 
1

注意從print_r它的對象沒有一個數組的數組的數組。所以,你需要做的

foreach ($r2 as $object) { 
    echo $object->name; 
} 
2

你有對象的一個維數組,實例stdClass,確切的說:

Array 
(
    [0] => stdClass Object //<== stdClass OBJECT!! 

這意味着,你可以使用的對象,並獲得就像你使用任何對象的名稱:

foreach ($array as $row) 
{ 
    echo $row->name, PHP_EOL; 
} 

或者,如果你真的想,你可以簡單地個的對象數組:

foreach ($array as $k => $o) 
{ 
    $array[$k] = (array) $o;//cast and re-assign 
} 

下一次你遍歷所有的$array,對象將會消失,你會得到關聯數組,而不是...真的,不過,這個轉換業務就是多餘的,我如果我是你,真的只是使用這些物體。
當然,如果您可以更改獲取模式,則可以對其進行更改,以便所有結果都作爲關聯數組提取。

根據the wordpress documentation,可以傳遞一個第二個參數get_results方法,它指定fetch方法

$r2 = $wpd->get_results($q2, ARRAY_A); 

將是最好的方式,以確保$r2實際上是關聯數組的數組

引述上,我這個基地的文檔:

可以使用get_results從數據庫中提取泛型,多行結果。該函數將整個查詢結果作爲數組返回,或者在沒有結果時返回NULL。此數組的每個元素對應於查詢結果的一行,並且與get_row一樣,可以是對象,關聯數組或編號數組。

<?php $wpdb->get_results('query', output_type); ?> 

查詢
(字符串)要運行的查詢。將此參數設置爲null將返回上一個查詢的緩存結果中的數據。

output_type
之一四個預定義的常數。默認爲OBJECT。請參閱SELECT a Row及其示例以獲取更多信息。
OBJECT - 結果將作爲行對象的數字索引數組輸出。
OBJECT_K - 結果將是作爲行對象的關聯數組輸出,使用第一列的值作爲密鑰(重複將被丟棄)。
ARRAY_A - 結果將是關聯數組的數字索引陣列輸出,使用列名作爲密鑰。
ARRAY_N - 結果將作爲數值索引數組的數字索引數組輸出。

1

您可以使用在WordPress wp_list_pluck

<?php names = wp_list_pluck($your_array, 'name'); ?>