2012-01-20 21 views
12

Por ejemplo, tengo una matriz multidimensional de la siguiente manera:Obtener la clave de la matriz multidimensional?

$array = array (
    0 => 
    array (
     'id' => '9', 
     'gallery_id' => '2', 
     'picture' => '56475832.jpg' 
    ), 
    1 => 
    array (
     'id' => '8', 
     'gallery_id' => '2', 
     'picture' => '20083622.jpg' 
    ), 
    2 => 
    array (
     'id' => '7', 
     'gallery_id' => '2', 
     'picture' => '89001465.jpg' 
    ), 
    3 => 
    array (
     'id' => '6', 
     'gallery_id' => '2', 
     'picture' => '47360232.jpg' 
    ), 
    4 => 
    array (
     'id' => '5', 
     'gallery_id' => '2', 
     'picture' => '4876713.jpg' 
    ), 
    5 => 
    array (
     'id' => '4', 
     'gallery_id' => '2', 
     'picture' => '5447392.jpg' 
    ), 
    6 => 
    array (
     'id' => '3', 
     'gallery_id' => '2', 
     'picture' => '95117187.jpg' 
    ) 
); 

¿Cómo puedo obtener la clave de array(0,1,2,3,4,5,6)?

He intentado muchos ejemplos, pero nada me ha funcionado.

Respuesta

12

Esto es muy sencillo, sólo tiene que utilizar array_keys():

$keys = array_keys($array); 

See it working

EDITAR Para su tarea de búsqueda, esta la función debería hacer el trabajo:

function array_search_inner ($array, $attr, $val, $strict = FALSE) { 
    // Error is input array is not an array 
    if (!is_array($array)) return FALSE; 
    // Loop the array 
    foreach ($array as $key => $inner) { 
    // Error if inner item is not an array (you may want to remove this line) 
    if (!is_array($inner)) return FALSE; 
    // Skip entries where search key is not present 
    if (!isset($inner[$attr])) continue; 
    if ($strict) { 
     // Strict typing 
     if ($inner[$attr] === $val) return $key; 
    } else { 
     // Loose typing 
     if ($inner[$attr] == $val) return $key; 
    } 
    } 
    // We didn't find it 
    return NULL; 
} 

// Example usage 
$key = array_search_inner($array, 'id', 9); 

El cuarto parámetro $strict, si es TRUE, usará comparaciones de tipo estricto. Por lo tanto, 9 no funcionará, debe pasar '9', ya que los valores se almacenan como cadenas. Devuelve la clave de la primera aparición de una coincidencia, NULL si no se encuentra el valor, o FALSE en caso de error. asegúrese de usar una comparación estricta en el valor de retorno, ya que 0, NULL y FALSE son todos valores de retorno posibles y todos evaluarán a 0 si se usan comparaciones de números enteros sueltos.

+1

Sí, está funcionando, pero , necesito buscar en el arreglo, por ejemplo, id = 9, y obtener el id. de retorno de la matriz, donde está id = 9 –

+0

@ JurijsGuščins Ver la edición anterior. – DaveRandom

+0

Funciona a la perfección. Realmente muy agradecido :) –

0

¿Quieres decir algo como esto:

 

function getKeys($array) 
{ 
    $resultArr = array(); 
    foreach($array as $subArr) { 
     $resultArr = array_merge($resultArr, $subArr); 
    }   
    return array_keys($resultArr); 
} 

 
+0

Creo que no expliqué bien mi situación. Por ejemplo, estoy buscando array donde está id = 9, y necesito una clave de matriz de ese wheres 9, sería 0, si voy a buscar id wheres 8, obtendré 1 –

2

Prueba de esto, creo que le ayudará .

foreach ($array as $key=>$value) 
{ 
    echo $key.'<br/>'; 

    echo $value['id'].'<br/>'; 
    echo $value['gallery_id'].'<br/>'; 
    echo $value['picture'].'<br/><br/>'; 
} 
Cuestiones relacionadas