如何将对象转换为数组以获取数据?

时间:2011-01-22 11:39:23

标签: php wordpress

我的阵列就像这样

Array ( [0] => stdClass Object ( [ID] => 578 [post_author] => 1 [post_date] => 2011-01-18 07:23:17 [post_date_gmt] => 2011-01-18 07:23:17 [post_content] => Home WordPress is web software you can use to create a beautiful website or blog. We like to say that WordPress is both free and priceless at the same time. The core software is built by hundreds of community volunteers, and when you’re ready for more there are thousands of plugins and themes available to transform your site into almost anything you can imagine. Over 25 million people have chosen WordPress to power the place on the web they call “home” — we’d love you to join the family [post_title] => second post [post_excerpt] => [post_status] => publish [comment_status] => open

当我这样写的时候

$myposts = get_posts( $args );
$arrDt = (array) $myposts;
print_r($arrDt);

但我的问题是如何获取该对象数组中的值。

请帮忙。 日Thnx 的print_r($ arrDt);

4 个答案:

答案 0 :(得分:4)

这只是普通的对象访问:

$obj = $arrDt[0];
echo $obj->ID;
echo $obj->post_author;
// etc.

但这取决于你想做什么。我建议看看get_posts示例。他们使用setup_postdata在当前上下文中加载帖子内容。如果你想显示帖子,这可能是更清洁的解决方案。

答案 1 :(得分:3)

这很简单:

您有一个数组Array ( [0] => stdClass Object ( [ID]

这个数组有一个KEY,可以通过“[0]”识别(但可能存在更多的键)) 访问密钥:

foreach ( $arrDt as $value ): //Look, whe are inside the first key. (currently is '0').
   echo $value->ID;
   echo $value->post_author;
endforeach;

或者,如果你想将对象转换为数组(例如$ value ['ID']),你只需要这样:

    function objectToArray($obj)
    {
         if (is_object($obj)):
             $object = get_object_vars($obj); 
         endif;

         return array_map('objectToArray', $object); // return the object, converted in array.
    }

$objArray = objectToArray($arrDt);
print_r($objArray);

答案 2 :(得分:1)

就我而言:

foreach ($returnedObject as $row) {
    $sub_array = '';
    $sub_array['ID'] = $row->data->ID;
    $sub_array['user_login'] = $row->data->user_login;
    $sub_array['display_name'] = $row->data->display_name;
    $sub_array['user_email'] = $row->data->user_email;
    $sub_array['user_registered'] = $row->data->user_registered;
    $main_array[] = $sub_array;
}

答案 3 :(得分:0)

您可以使用 wp_get_recent_posts()代替 get_posts() wp_get_recent_posts()函数返回一个普通数组而不是对象数组,然后使用foreach循环可以访问数组的任何值。