2017-07-26 28 views
1

我想在wordpress上得到yesterday的所有post IDs,當我在phpMyAdmin上嘗試時,SQL查詢很有效,它從昨天返回所有IDs。但是,當我試圖將IDs回顯出陣列時,數組中的值是'Array'而不是ID,它應該是數字。我想知道爲什麼陣列中的IDs都變成了「數組」這個詞。這是我寫的代碼:在php程序中從sql中回聲陣列

$yesterday = strtotime("-1 days"); 
$day = (int)date("d", $yesterday); 
$month = (int)date("n", $yesterday); 
$year = (int)date("Y", $yesterday); 

$sql = " 
    SELECT ID 
    FROM wp_posts 
    WHERE 1 = 1 
    AND DAY(post_date) = $day 
    AND MONTH(post_date) = $month 
    AND YEAR(post_date) = $year 
"; 

global $wpdb; 
$results = $wpdb->get_results($sql, 'ARRAY_N'); 

foreach ($results as $id) { 
    echo '<br>' . $id; 
} 

更新: 我改變輸出的類型ARRAY_A,並且增加了var_dump()foreach循環之前,看看有什麼在陣列內,這是我得到了什麼:

output

+0

:: WPDB get_results(字符串$查詢= NULL,字符串$輸出= OBJECT) 返回# (陣列|對象|空)數據庫查詢結果 https://developer.wordpress.org/reference/classes/wpdb/get_results/ – Shefali

回答

1

使用ARRAY_A獲得關聯數組,而不是ARRAY_N返回數字索引多維數組.. $results在你的代碼是多維數組.. 使用var_dump()上取代echo查看變量的內容(測試)

+0

'echo $ id ['ID'];' –

+0

'var_dump()'我可以看到'ID'存儲在另一個較大數組內的數組內,我得到了輸出的屏幕截圖並在帖子中更新。所以,現在當我爲更大的數組的'foreach'內部的內部數組放置一個'foreach'循環時,它會打印'ID',這要感謝'var_dump()'的檢查。 – lhy

0

根據這一answer你應該做下面的代碼在foreach循環

foreach ($results as $result) { 
    echo '<br>' . $result->id; 
} 

嘗試打印$results並獲得適當的對象。

+0

我沒有輸出該代碼,並打印'$ results'給了我'數組' – lhy