[英]php: how to get associative array key from numeric index?
如果我有:
$array = array( 'one' =>'value', 'two' => 'value2' );
我如何從$array[1]
取回字符串one
?
你沒有。 您的數組沒有鍵[1]
。 你可以:
創建一個包含鍵的新數組:
$newArray = array_keys($array); echo $newArray[0];
但是值 "one" 是$newArray[0]
,而不是[1]
。
一個快捷方式是:
echo current(array_keys($array));
獲取數組的第一個鍵:
reset($array); echo key($array);
獲取值“value”對應的key:
echo array_search('value', $array);
這一切都取決於您究竟想要做什么。 事實是, [1]
不對應於任何你轉動它的“一”。
$array = array( 'one' =>'value', 'two' => 'value2' );
$allKeys = array_keys($array);
echo $allKeys[0];
這將輸出:
one
如果您只打算特別使用一個鍵,則可以用一行完成此操作,而不必為所有鍵存儲一個數組:
echo array_keys($array)[$i];
或者,如果您需要循環使用它
foreach ($array as $key => $value)
{
echo $key . ':' . $value . "\n";
}
//Result:
//one:value
//two:value2
$array = array( 'one' =>'value', 'two' => 'value2' );
$keys = array_keys($array);
echo $keys[0]; // one
echo $keys[1]; // two
關鍵功能對我有幫助,而且非常簡單:
key() 函數只返回內部指針當前指向的數組元素的鍵。 它不會以任何方式移動指針。 如果內部指針指向元素列表的末尾或數組為空,則 key() 返回 NULL。
示例:
<?php
$array = array(
'fruit1' => 'apple',
'fruit2' => 'orange',
'fruit3' => 'grape',
'fruit4' => 'apple',
'fruit5' => 'apple');
// this cycle echoes all associative array
// key where value equals "apple"
while ($fruit_name = current($array)) {
if ($fruit_name == 'apple') {
echo key($array).'<br />';
}
next($array);
}
?>
上面的例子將輸出:
fruit1<br />
fruit4<br />
fruit5<br />
你可以這樣做:
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...
還沒有嘗試過代碼,但我很確定它會起作用。
祝你好運!
如果它是第一個元素,即$array[0]
,您可以嘗試:
echo key($array);
如果它是第二個元素,即$array[1]
,您可以嘗試:
next($array);
echo key($array);
我認為當所需元素是數組的第一個、第二個或最多第三個元素時,應該使用這種方法。 對於其他情況,應使用循環,否則代碼可讀性會降低。
再舉一個例子:
獲取數組中最常出現的次數:
PHP >= 7.3:
$ php --version
PHP 7.4.3 (cli) (built: Oct 6 2020 15:47:56) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
$ php -a
Interactive mode enabled
php > $a = array_count_values(array('abc','abc','def','def','def'));
php > var_dump($a);
array(2) {
["abc"]=>
int(2)
["def"]=>
int(3)
}
php > arsort($a);
php > var_dump($a);
array(2) {
["def"]=>
int(3)
["abc"]=>
int(2)
}
php > var_dump(array_key_first($a));
string(3) "def"
php > var_dump(array_keys($a)[1]);
string(3) "abc"
如果您有密鑰,則可以輕松查詢值(= 頻率)。
只是為那些 array_keys() 不起作用的人發布另一個解決方案
$myAssociativeArray = [
'name' => 'sun',
'age' => 21
);
$arrayKeys = [];
foreach($myAssociativeArray as $key => $val){
array_push($arrayKeys, $key);
}
print_r($arrayKeys)
// ['name', 'age']
擴展 Ram Dane 的答案, key函數是獲取數組當前索引鍵的另一種方法。 您可以創建以下功能,
function get_key($array, $index){
$idx=0;
while($idx!=$index && next($array)) $idx++;
if($idx==$index) return key($array);
else return '';
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.