Extracto [cat_ID] de matriz PHP

2 minutos de lectura

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.

  • Seguro que podrías usar esto como un iniciador: stackoverflow.com/questions/7694843/…

    – mejor programador del mundo

    7 mayo 2014 a las 10:47

avatar de usuario
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.

avatar de usuario
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'

¿Ha sido útil esta solución?