Как преобразовать объект в массив, чтобы получить данные? - PullRequest
5 голосов
/ 22 января 2011

Мой массив выглядит так

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 ($ Сезонный);

Ответы [ 4 ]

4 голосов
/ 22 января 2011

Это просто обычный доступ к объекту:

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

Но это зависит от того, что вы хотите сделать. Предлагаю взглянуть на get_posts примеры. Они используют setup_postdata для загрузки содержимого публикации в текущем контексте. Если вы хотите отобразить сообщение, это, вероятно, более чистое решение.

3 голосов
/ 22 января 2011

Все очень просто:

У вас есть массив Array ( [0] => stdClass Object ( [ID]

В этом массиве есть один КЛЮЧ, который можно идентифицировать с помощью «[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);
1 голос
/ 25 мая 2016

В моем случае это было:

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;
}
0 голосов
/ 28 июля 2015

вы можете использовать wp_get_recent_posts () вместо get_posts () . Функция wp_get_recent_posts () возвращает обычный массив вместо массива объектов, тогда с помощью цикла foreach вы можете получить доступ к любому значению массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...