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

can't get value from associative array when using foreach loop

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

$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 上的其他 code/posts 进行了比较,我很确定我缺少的任何东西都是非常基本的,但我看不到它。

尝试以下代码解决:

$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>';
}

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

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

如果数组格式对您来说很重要,那么您可以通过

将 stdClass 转换为数组
$data=json_decode(json_encode($result,true),true);

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

您可以看到您的 var_dump 函数显示 $result 是一个 stdClass() 对象。

这意味着如果你想得到那个对象的值你需要使用$result->title而不是$result['title']

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

你会发现 get_results() 方法有第二个 ($output) 参数,它显示了结果将如何 return 给你。

例如:

$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
}