簡體   English   中英

如何通過搜索偏移量值獲取關聯數組的鍵?

[英]How to get key of an associative array by searching for offset value?

以這個為例並了解密鑰

$arr = array(
    'product1'=>array('color'=>'blue','size'=>'medium'),
    'product2'=>array('color'=>'green','size'=>'large'),
    'product3'=>array('color'=>'yellow','size'=>'small'),
);

有沒有一種方法可以通過其增量值來獲取多維數組中的任何鍵?

例如,我想獲取上面$arr第三個數組值的鍵。 $arr[2]將返回值(包含黃色/較小的數組)。

有沒有辦法利用key函數通過其數字迭代器而不是“當前位置”的key來獲取任何鍵?

或者,是否還有另一個我顯然忽略的內置函數會返回$arr[2]的鍵而不是它的值?

echo getkey($arr[2]);

# returns product3

只需使用array_keys函數:

$arr = array(
            'product1'=>array('color'=>'blue','size'=>'medium'),
            'product2'=>array('color'=>'green','size'=>'large'),
            'product3'=>array('color'=>'yellow','size'=>'small'),
        );

$keys = array_keys($arr);

echo $keys[2];

// shorter version
echo array_keys($arr)[2];

更多信息: http : //php.net/manual/zh/function.array-keys.php

僅僅從中選擇一個來生成新的/完整的鍵數組似乎不合邏輯/高效。 其他答案是“工作太努力”。

array_slice()專門根據位置而不是鍵名提取數組的各個部分。 這使其成為這種情況的理想功能。

更好的做法是只切出所需的子數組,然后調用其鍵,如下所示:

代碼:( 演示

$arr = array(
            'product1'=>array('color'=>'blue','size'=>'medium'),
            'product2'=>array('color'=>'green','size'=>'large'),
            'product3'=>array('color'=>'yellow','size'=>'small'),
        );
$key=2;
echo key(array_slice($arr,$key,1));  // [input],[0-indexed position],[number of subarrays]

輸出:

product3

您可以使用array_keys()函數:

function getKey($arr, $i) {
    if (empty($arr[array_keys($arr)[$i]])) {
        return null;
    }

    // array_keys($arr)[$i] returns original array's key at i position
    // if i = 2, array_keys($arr)[$i] = 'product3'
    return array_keys($arr)[$i];
}

// echo getKey($arr, 2);
// returns product3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM