2017-07-26 64 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