簡體   English   中英

使用PHP檢索多維數組中的第一個鍵

[英]Retrieve first key in multi-dimensional array using PHP

我想從這個多維數組中檢索第一個鍵。

Array
(
    [User] => Array
        (
            [id] => 2
            [firstname] => first
            [lastname] => last
            [phone] => 123-1456
            [email] => 
            [website] => 
            [group_id] => 1
            [company_id] => 1
        )

)

該數組存儲在$ this-> data中。

現在我正在使用鍵($ this-> data)來檢索'User',但這不是達到結果的正確方法。

還有其他方法可以檢索此結果嗎?

謝謝

還有其他方法可以做到這一點但沒有像使用key()那樣快速和簡短。 其他所有用途都是獲取所有密鑰。 例如,所有這些都將返回數組中的第一個鍵:

$keys=array_keys($this->data);
echo $keys[0]; //prints first key

foreach ($this->data as $key => $value)
{
    echo $key;
    break;
}

你可以看到兩者都很草率。

如果你想要一個oneliner,但是如果迭代器不在第一個元素上,你想保護自己不會意外地得到錯誤的鍵,試試這個:

reset($this->data);

重啟():

reset()將數組的內部指針倒回第一個元素,並返回第一個數組元素的值。

但是你所做的對我來說很好看。 有一個功能可以在一行中完成您想要的功能; 你還想要什么?

使用此(PHP 5.5+):

echo reset(array_column($this->data, 'id'));

我有一個類似的問題要解決,很高興找到這篇文章。 但是,所提供的解決方案僅適用於2個級別,並且不適用於具有任意數量級別的多維陣列。 我需要一個可以適用於任何維度的數組的解決方案,並且可以找到每個級別的第一個鍵。

經過一些工作后,我找到了一個可能對其他人有用的解決方案,因此我將我的解決方案作為本文的一部分。

這是一個示例啟動數組:

    $myArray = array(
    'referrer' => array(
        'week' => array(
            '201901' => array(
                'Internal' => array(
                    'page' => array(
                        'number' => 201,
                        'visits' => 5
                    )
                ),
                'External' => array(
                    'page' => array(
                        'number' => 121,
                        'visits' => 1
                    )
                ),
            ),
            '201902' => array(
                'Social' => array(
                    'page' => array(
                        'number' => 921,
                        'visits' => 100
                    )
                ),
                'External' => array(
                    'page' => array(
                        'number' => 88,
                        'visits' => 4
                    )
                ),
            )
        )
    )
);

因為這個函數需要顯示所有的第一個鍵,無論數組的維度是什么,這建議一個遞歸函數,我的函數如下所示:

function getFirstKeys($arr){
    $keys = '';
    reset($arr);
    $key = key($arr);
    $arr1 = $arr[$key];
    if (is_array($arr1)){
        $keys .= $key . '|'. getFirstKeys($arr1);
    } else {
        $keys = $key;
    }
    return $keys;
}

使用代碼調用函數時:

$xx = getFirstKeys($myArray);
echo '<h4>Get First Keys</h4>';
echo '<li>The keys are: '.$xx.'</li>';

輸出是:

獲得第一把鑰匙

  • 鍵是:referrer | week | 201901 |內部|頁面|數字

我希望如果他們遇到類似的問題,這會節省一些時間。

暫無
暫無

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

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