Je récupère post_id de postmeta en tant que:
$post_id = $wpdb->get_results("SELECT post_id FROM $wpdb->postmeta WHERE (meta_key = 'mfn-post-link1' AND meta_value = '". $from ."')");
quand j'essaie print_r($post_id);
J'ai un tableau comme celui-ci:
Array
(
[0] => stdClass Object
(
[post_id] => 140
)
[1] => stdClass Object
(
[post_id] => 141
)
[2] => stdClass Object
(
[post_id] => 142
)
)
et je ne sais pas comment le parcourir, et comment pourrais-je obtenir un tableau comme celui-ci
Array
(
[0] => 140
[1] => 141
[2] => 142
)
Une idée de comment je peux faire ça?
Le moyen le plus simple est d’encoder JSON avec votre objet, puis de le décoder de nouveau dans un tableau:
$array = json_decode(json_encode($object), True);
Ou si vous préférez, vous pouvez également parcourir l’objet manuellement:
foreach ($object as $value)
$array[] = $value->post_id;
Très simple, commencez par transformer votre objet en objet JSON, cela retournera une chaîne de votre objet dans un représentant JSON.
Prenez ce résultat et décodez-le avec un paramètre supplémentaire, true, où il sera converti en tableau associatif.
$array = json_decode(json_encode($oObject),true);
Essaye ça:
$new_array = objectToArray($yourObject);
function objectToArray($d)
{
if (is_object($d)) {
// Gets the properties of the given object
// with get_object_vars function
$d = get_object_vars($d);
}
if (is_array($d)) {
/*
* Return array converted to object
* Using __FUNCTION__ (Magic constant)
* for recursive call
*/
return array_map(__FUNCTION__, $d);
} else {
// Return array
return $d;
}
}
Vous pouvez convertir un objet std en tableau comme ceci:
$objectToArray = (array)$object;
Pour les tableaux unidimensionnels:
$array = (array)$class;
Pour un tableau multidimensionnel:
function stdToArray($obj){
$reaged = (array)$obj;
foreach($reaged as $key => &$field){
if(is_object($field))$field = stdToArray($field);
}
return $reaged;
}
Lors de la conversion d'un objet de classe STD en tableau.Cast l'objet en tableau en utilisant tablea fonction de php.
Essayez avec l'extrait de code suivant.
/*** cast the object ***/
foreach($stdArray as $key => $value)
{
$stdArray[$key] = (array) $value;
}
/*** show the results ***/
print_r( $stdArray );
$wpdb->get_results("SELECT ...", ARRAY_A);
ARRAY_A est un argument "type_sortie". Il peut s'agir d'une des quatre constantes prédéfinies (par défaut, OBJECT):
OBJECT - result will be output as a numerically indexed array of row objects.
OBJECT_K - result will be output as an associative array of row objects, using first columns values as keys (duplicates will be discarded).
ARRAY_A - result will be output as an numerically indexed array of associative arrays, using column names as keys.
ARRAY_N - result will be output as a numerically indexed array of numerically indexed arrays.
Vous pouvez essayer ceci:
$aInitialArray = array_map(function($oObject){
$aConverted = get_object_vars($oObject);
return $aConverted['post_id'];
}, $aInitialArray);
Supposons que $ post_id est un tableau de $ item
$post_id = array_map(function($item){
return $item->{'post_id'};
},$post_id);
texte fort
Utiliser ArrayObject de Std ou construire le vôtre
(new\ArrayObject ($ existingStdClass))
vous pouvez utiliser la méthode de compilation sur la nouvelle classe:
getArrayCopy ()
ou passez le nouvel objet à
iterator_to_array
si vous avez un tableau et que l'élément de tableau est un élément stdClass, c'est la solution
`foreach($post_id as $key=>$item){
$post_id[$key]= (array)$item;
}`
maintenant la classe stdClass a été remplacée par un tableau à l'intérieur du tableau en tant que nouvel élément de tableau