[英]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];
僅僅從中選擇一個來生成新的/完整的鍵數組似乎不合邏輯/高效。 其他答案是“工作太努力”。
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.