1. 程式人生 > >PHP通過二維陣列鍵值獲取一維鍵名

PHP通過二維陣列鍵值獲取一維鍵名

有如下既定陣列:

$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))