使用 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
时,我得到的只是 int
或 NULL
当我使用键时。
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
}
过去一个小时我一直盯着这个看,似乎无法理解为什么它不起作用。下面的代码从数组中的 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
时,我得到的只是 int
或 NULL
当我使用键时。
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
}