Tengo la siguiente matriz (solo una parte de la matriz completa) y quiero extraer el valor de [cat_ID].
Array ([1] => stdClass Object ( [term_id] => 21 [name] => z_aflyst [slug] => z_aflyst
[term_group] => 0 [term_taxonomy_id] => 23 [taxonomy] => category
Extract [cat_ID] from array PHP => [parent] => 0 [count] => 1 [object_id] => 7 [cat_ID] => 21
[cat_name] => z_aflyst ))
Entonces necesito extraer el 21 en este caso. Sin embargo, solo quiero extraer el cat_ID
Si el cat_name
es igual z_aflyst
.
ka_lin
Dar que usted tiene una matriz de objetos:
Array (
[1] => stdClass Object
(
[term_id] => 21
[name] => z_aflyst
[slug] => z_aflyst
[term_group] => 0
[term_taxonomy_id] => 23
[taxonomy] => category
Extract [cat_ID] from array PHP =>
[parent] => 0
[count] => 1
[object_id] => 7
[cat_ID] => 21
[cat_name] => z_aflyst )
)
foreach ($items as $item)
{
if($item->cat_name == 'z_aflyst')
{
//do stuff
}
}
-
¿De dónde provienen los $ artículos?
–Reza Saberi
7 mayo 2014 a las 10:39
-
Tiene var_dump-ed una matriz que contiene objetos stdClass (actualmente 1 objeto) como puedo ver … no se proporcionó ningún código …
– ka_lin
7 mayo 2014 a las 10:40
-
asumió $items=array(..your array..);
– Rotari Radu
7 mayo 2014 a las 10:41
-
no necesita foreach … esto pasará por todos los elementos sin la necesidad de eso
– Elzo Valugui
7 mayo 2014 a las 10:43
-
@Elzo Valugi: ¿Por qué? Tiene una variedad de objetos.
– ka_lin
7 mayo 2014 a las 10:50
Tienes una matriz de objetos estándara qué propiedades se puede acceder usando el operador de flecha (objeto) ->
.
Puedes usar array_filter()
para filtrar elementos no deseados de la matriz:
// Assuming your array is called $items
$filtered = array_filter($items, function($v) {
return $v->cat_name === 'z_aflyst';
});
Después de eso, puede “aplanar” la matriz usando array_map()
para que solo contenga el cat_ID si lo deseas:
$filtered = array_map(function($v) {
return $v->cat_ID;
}, $filtered);
Esto le dejará con una matriz indexada de una dimensión de cat_ID.
Elzo Valugui
Su matriz es en este ejemplo un poco más que una simple matriz, es un objeto estándar. Y usted puede aprovechar esto. Puede conocer las propiedades de un objeto estándar con esta fórmula:
$object->property;
en tu caso el objeto es
$object = $array[1];
o por esta fórmula como una matriz
$array[key];
en su caso para obtener el valor de cat_ID:
$object->cat_ID;
Así que tu código será algo como:
if ($object->cat_name == 'z_aflyst') {
// do stuff with your cat_ID value
echo $object->cat_ID;
}
// will echo 21 only of the cat_name has value 'z_aflyst'
Seguro que podrías usar esto como un iniciador: stackoverflow.com/questions/7694843/…
– mejor programador del mundo
7 mayo 2014 a las 10:47