2010-11-04 12 views

Respuesta

91

que haces. Su matriz no tiene una clave [1]. Usted podría:

  • Hacer una nueva matriz, que contiene las claves:

    $newArray = array_keys($array); 
    echo $newArray[0]; 
    

    Pero el "uno" valor se encuentra en $newArray[0], no [1].
    Un acceso directo sería:

    echo current(array_keys($array)); 
    
  • conseguir la primera clave de la matriz:

    reset($array); 
    echo key($array); 
    
  • Obtener la clave correspondiente al valor "valor":

    echo array_search('value', $array); 
    

Todo esto depende de qué es exactamente lo que quiere hacer. El hecho es que [1] no se corresponde con "uno", ni en qué dirección lo gire.

+0

Hacer una nueva matriz, creo que es la mejor –

48
$array = array('one' =>'value', 'two' => 'value2'); 

$allKeys = array_keys($array); 
echo $allKeys[0]; 

Cuál sería:

one 
+0

@KennyTM (Resultado: http://www.ideone.com/pFh0o) es un vínculo inactivo –

3

o no, si lo necesita en un bucle

foreach ($array as $key => $value) 
{ 
    echo $key . ':' . $value . "\n"; 
} 
//Result: 
//one:value 
//two:value2 
+1

Hace eco de todas las teclas. Pero topicstarter necesita obtener la clave por índice numérico. No es lo mismo. – pltvs

+0

Estoy muy consciente de eso.Pero dado el hecho de que topicstarter es nuevo para php, esto podría haber sido lo que estaba tratando de lograr y simplemente no sabía de la sintaxis foreach;) – Decko

2
$array = array('one' =>'value', 'two' => 'value2'); 
$keys = array_keys($array); 
echo $keys[0]; // one 
echo $keys[1]; // two 
0

Usted puede hacerlo de esta manera:

function asoccArrayValueWithNumKey(&$arr, $key) { 
    if (!(count($arr) > $key)) return false; 
    reset($array); 
    $aux = -1; 
    $found = false; 
    while (($auxKey = key($array)) && !$found) { 
     $aux++; 
     $found = ($aux == $key); 
    } 
    if ($found) return $array[$auxKey]; 
    else return false; 
} 

$val = asoccArrayValueWithNumKey($array, 0); 
$val = asoccArrayValueWithNumKey($array, 1); 
etc... 

no tryed el código, pero estoy bastante seguro de que funcionará.

¡Buena suerte!

0

la función key me ayudó y es muy simple

+0

Por favor, no solo publique una enlazar; podría no funcionar en el futuro. En cambio, amplíe lo que hace la función y cómo usarla. –

12

Si usted sólo va a trabajar con una clave, en particular, es posible lograr esto con una sola línea sin tener que almacenar una matriz para todas las claves:

echo array_keys($array)[$i]; 
+0

gracias ... esto es todo lo que se necesita para alguien en un bucle for – Andrew

+2

Nota: Esto requiere PHP 5.4+ - [fuente 1] (http://php.net/manual/en/language.types.array.php# language.types.array.syntax.accessing) | [fuente 2] (https://wiki.php.net/rfc/functionarraydereferencing). – Pang

-1

Ampliando la respuesta de Ram Dane, la función key es una forma alternativa de obtener la clave del índice actual de la matriz. Puede crear la siguiente función,

function get_key($array, $index){ 
     $idx=0; 
     while($idx!=$index && next($array)) $idx++; 
     if($idx==$index) return key($array); 
     else return ''; 
    } 
Cuestiones relacionadas