使用foreach循环时无法从关联数组中获取值

时间:2018-08-27 14:53:57

标签: php associative-array

过去一个小时我一直在盯着它看,似乎无法理解为什么它不起作用。下面的代码从表中获取信息,该表位于数组中(代码下方的示例)。

$post_id = 228;

$content_post = get_post($post_id);
$content = $content_post->post_content;

global $wpdb;

$results =$wpdb->get_results("SELECT * FROM wp_article_hyperlinks"); 

foreach ($results as $result){
// $url = $result["url"];
// $title = $result["title"];

    echo '<pre>';
    var_dump($result["title"]);
    echo '</pre>';
}
}

我正在尝试获取标题值,但以上内容仅会转储空白屏幕。当我使用键和值运行foreach时,得到的全部是使用键时的intNULL

object(stdClass)#717 (4) {
  ["ID"]=>
  string(1) "1"
  ["time"]=>
  string(19) "2018-08-22 12:30:29"
  ["title"]=>
  string(15) "gluteus maximus"
  ["url"]=>
  string(86) "/wp-content/blahblah"
}

我已将其与SO和W3Schools上的其他代码/帖子进行了比较,我很确定我所缺少的东西都是非常基本的,但我看不到。

3 个答案:

答案 0 :(得分:4)

这是一个stdClass对象,您尝试像访问数组一样尝试访问它。

尝试像$result->title一样访问它。

如果对数组格式至关重要,则可以通过以下方式将stdClass转换为数组

$data=json_decode(json_encode($result,true),true);

这将为您提供一系列数据,您可以使用已知的常规方法访问数据。

答案 1 :(得分:2)

您可以看到var_dump函数显示$resultstdClass()对象。

这意味着,如果要获取该对象的值,则需要使用$result->title而不是$result['title']

您还可以查看WordPress文档的wpdb::get_results()主题。

您会发现get_results()方法具有第二个($output)参数,该参数显示了结果将如何返回给您。

例如:

$results = $wpdb->get_results("SELECT * FROM wp_article_hyperlinks", ARRAY_A);
foreach ($results as $result) {
    // $result['title'] - You can get title value from an associative array
}

$results = $wpdb->get_results("SELECT * FROM wp_article_hyperlinks", ARRAY_N);
foreach ($results as $result) {
    // $result[2] - You can get title value from an numeric array
}

答案 2 :(得分:-1)

尝试下面的代码来解决:

$post_id = 228;

$content_post = get_post($post_id);
$content = $content_post->post_content;

global $wpdb;

$results =$wpdb->get_results("SELECT * FROM wp_article_hyperlinks"); 

foreach ($results as $result){
// $url = $result["url"];
// $title = $result["title"];

    echo '<pre>';
    var_dump($result->title);
    echo '</pre>';
}