No he codificado PHP durante muchos años, pero estoy probando un complemento de wordpress.
Tengo un problema extraño con algunos valores de matriz devueltos por una función.
Este problema específico no importa, el problema realmente es si se trata de valores devueltos por funciones, ¿cómo se verifica la estructura devuelta?
Tengo una matriz construida con la declaración:
$args = array(shortcode_atts(OFP_Posts::get_default_args($dev_mode), $atts));
y cuando paso esa matriz a una función estática, obtengo este comportamiento extraño:
static function get_recent_posts($args = array()) {
$dm = $args['date_modified'];
$jargs = json_encode($args);
echo "<p>at top, mod date:$dm:</p><p> $jargs</p>";
Obtengo un valor diferente para ‘date_modified’ de la variable ‘$dm’, al de json. El que está en el json es lo que esperaría.
salida de eco:
at top, mod date::
[{"dev_mode":"simpl","limit":5,"offset":0,"order":"DESC","orderby":"date","cat":[],"tag":[],"taxonomy":"","post_type":["post"],"post_status":"publish","ignore_sticky":1,"exclude_current":1,"excerpt":false,"length":10,"date":" ","date_relative":"","date_modified":"yes","css":"","cssID":"","css_class":"","before":"","after":""}]
Nota: $dm parece ser una cadena vacía y, sin embargo, «date_modified» está configurado en «yes».
Debo estar haciendo algo fundamentalmente mal. Cualquier sugerencia apreciada.
@ADyson sugirió usar var_export($args)
… que creo que ha proporcionado la respuesta. Los datos devueltos de short_code_atts
no hace una matriz simple.
Gracias @ADyson
array ( 0 => (object) array( 'dev_mode' => 'simpl', 'limit' => 5, 'offset' => 0, 'order' => 'DESC', 'orderby' => 'date', 'cat' => array ( ), 'tag' => array ( ), 'taxonomy' => '', 'post_type' => array ( 0 => 'post', ), 'post_status' => 'publish', 'ignore_sticky' => 1, 'exclude_current' => 1, 'excerpt' => false, 'length' => 10, 'date' => ' ', 'date_relative' => '', 'date_modified' => 'yes', 'css' => '', 'cssID' => '', 'css_class' => '', 'before' => '', 'after' => '', ), 'date_modified' => 'maybe: ', )
Nota: Resuelto. Siguiendo la sugerencia de agregar var_export, tenía todo lo necesario para corregir los errores. La lección es que los datos pueden no ser lo que espera, y var_dump
o var_export
son las formas de comprobar.
.