¿Cómo convertir un objeto a una matriz para obtener los datos?

3 minutos de lectura

avatar de usuario
rajeshrt

Mi matriz viene así

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

cuando escribo asi

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

pero mi problema es cómo puedo obtener los valores dentro de esa matriz de objetos.

por favor ayuda. Gracias print_r($arrDt);

avatar de usuario
Félix Kling

Es solo un acceso normal a objetos:

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

Pero depende de lo que quieras hacer. Sugiero echar un vistazo a la get_posts ejemplos Ellos usan setup_postdata para cargar el contenido de la publicación en el contexto actual. Si desea mostrar la publicación, esta es probablemente la solución más limpia.

  • @usuario si una respuesta resuelve su pregunta, se le anima a aceptarla marcando el contorno de la marca de verificación verde junto a ella. Si hay varias respuestas, marque la que le resultó más útil y considere votar a favor de cualquier otra respuesta.

    – Gordon

    22 de enero de 2011 a las 12:38

Es muy simple:

tienes una matriz Array ( [0] => stdClass Object ( [ID]

Esta matriz tiene una CLAVE, que se puede identificar con “[0]” (pero pueden existir más claves)) Acceso a la clave:

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

O, si desea convertir un objeto en una matriz (como $valor[‘ID’]por ejemplo), solo necesitas esto:

    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);

En mi caso fue:

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

puedes usar wp_get_recent_posts() en vez de get_posts(). los wp_get_recent_posts() La función devuelve una matriz normal en lugar de una matriz de objetos, luego, al usar el bucle foreach, puede acceder a cualquier valor de una matriz.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad