有如下既定數組:
$inviteType = [
'掃碼' => [
'type' => 0,
'point' => 5,
],
'評論' => [
'type' => 1,
'point' => 5,
],
'分享' => [
'type' => 2,
'point' => 10,
],
'邀請' => [
'type' => 3,
'point' => 50,
],
'關注' => [
'type' => 4,
'point' => 50,
],
'簽到' => [
'type' => 5,
'point' => 5,
],
'完善資料' => [
'type' => 6,
'point' => 50,
],
];
需求:
通過type裏面的鍵值,比如0這個值,獲取到“掃碼”這個中文文本,是個很頭痛的問題,最後通過查找資料,發現了一個很好用的方法,可以實現解決這個需求:
$arr = array_map('array_shift',$inviteType);
echo "<pre>";
print_r($arr);
echo "</pre>";
array_map(‘array_shift’,array),該方法的意思是將array的每一項的第一個鍵值移除,並返回該值,注意此時的鍵名仍然是array的鍵名,輸出結果如下:
Array
(
[掃碼] => 0
[評論] => 1
[分享] => 2
[邀請] => 3
[關注] => 4
[簽到] => 5
[完善資料] => 6
)
注意!返回的值是每一項的第一個鍵值,如果將point放在二維數組第一個,則返回的結果就是point的值了(適用範圍狹窄),因此實際使用中需要把指定字段調整到第一個!
得到了想要的數據了,自然能獲取到相對的鍵名了:
$type = 0;
$key = array_search($type,$arr);
echo $key;
輸出結果如下:
掃碼
所以通過二維數組的每一項第一個鍵值獲取一維鍵名可以總結爲下面這行代碼:
array_search('type',array_map('array_shift',$array))