2010-11-04 2 views

risposta

91

You Do not. Il tuo array non ha una chiave [1]. Si potrebbe:

  • Fare un nuovo array, che contiene le chiavi:

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

    Ma il "solo" il valore è in $newArray[0], non [1].
    Un collegamento potrebbe essere:

    echo current(array_keys($array)); 
    
  • garantita la prima chiave dell'array:

    reset($array); 
    echo key($array); 
    
  • Ottenere la chiave corrispondente al valore "valore":

    echo array_search('value', $array); 
    

Tutto dipende da cosa esattamente si vuole fare. Il fatto è che, [1] non corrisponde a "uno" in che modo lo si accende.

+0

Fare un nuovo array penso sia il migliore –

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

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

che sarà in uscita:

one 
+0

@KennyTM (Risultato: http://www.ideone.com/pFh0o) è un collegamento morto –

3

O se ne avete bisogno in un ciclo

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

Fa eco a tutti i tasti. Ma l'argomento topicter è necessario ottenere la chiave per indice numerico. Non è lo stesso. – pltvs

+0

Ne sono perfettamente consapevole.Ma dato che topicstarter è nuovo per php, questo potrebbe essere quello che stava cercando di ottenere e semplicemente non sapeva della sintassi di foreach;) – Decko

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

si potrebbe fare in questo modo:

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... 

Non hanno tryed il codice, ma sono abbastanza sicuro che funzionerà.

Buona fortuna!

0

la funzione key mi ha aiutato ed è molto semplice

+0

Si prega di non pubblicare solo un topic Link; potrebbe non funzionare in futuro. Invece, espandi ciò che fa la funzione e come usarla. –

12

Se solo si prevede di lavorare con una chiave, in particolare, si può raggiungere questo obiettivo con una sola linea, senza dover memorizzare una matrice per tutte le chiavi:

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

grazie ... questo è tutto ciò che è necessario per chiunque in un ciclo for – Andrew

+2

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

-1

Espansione sulla risposta di Ram Dane, la funzione key è un modo alternativo per ottenere la chiave dell'indice corrente dell'array. È possibile creare la seguente funzione,

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