2010-11-04 131 views

回答

91

你不知道。您的陣列沒有密鑰[1]。你可以:

  • 創建一個新的數組,其中包含關鍵字:

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

    但值 「一」 是$newArray[0],不[1]
    快捷方式將是:

    echo current(array_keys($array)); 
    
  • 獲取陣列的第一項:

    reset($array); 
    echo key($array); 
    
  • 獲取對應於值 「值」 鍵:

    echo array_search('value', $array); 
    

這一切都取決於你想要做什麼。事實上,[1]不對應「one」任何方式你打開它。

+0

製作新陣列我認爲是最好的 – 2018-01-20 16:09:49

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

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

將輸出:

one 
+0

@KennyTM(結果:http://www.ideone.com/pFh0o)是一個死鏈接 – 2014-04-03 06:08:49

3

或者,如果你需要在一個循環

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

它回顯所有鍵。但topicstarter需要通過數字索引來獲取密鑰。這是不一樣的。 – pltvs 2010-11-04 10:54:54

+0

我很清楚這一點。但考慮到topicstarter是php的新手,這可能是他試圖實現的目標,並且只是不知道foreach語法;) – Decko 2010-11-12 08:50:38

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

你可能會做這種方式:

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

有沒有tryed的代碼,但我敢肯定它會工作。

祝你好運!

0

key功能幫助我,是非常簡單的

+0

請不要只發佈一個鏈接;它可能不會在未來工作。相反,擴展該功能的功能以及如何使用它。 – 2014-07-29 16:16:43

12

如果你只打算在特定的一個重點工作,你可以用一條線做到這一點,而不必存儲陣列的所有鍵:

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

謝謝...這就是for循環中所有人都需要的所有東西 – Andrew 2016-05-05 17:59:30

+2

注意:這需要PHP 5.4+ - [source 1](http://php.net/manual/en/language.types.array.php# language.types.array.syntax.accessing)| [源2](https://wiki.php.net/rfc/functionarraydereferencing)。 – Pang 2016-07-05 08:41:13

-1

在Ram Dane的回答中展開,key函數是獲取數組當前索引鍵的另一種方法。您可以創建以下功能,

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