簡體   English   中英

獲取特定鍵的數組值

[英]Get array value for a specific key

如果上面的meta_key等於first_name ,我想獲取meta_value的值,我該怎么做?

我正在執行以下操作:

echo $name_data[1]['meta_value'];

由於meta_value並不總是位於[1]位置,因此無法使用。

這是數據,其中有數百個條目,但是數據混合在一起(即,同一數據並不總是出現在0,1,2 etc數組中)。

Array
(
    [0] => Array
        (
            [umeta_id] => 3221
            [user_id] => 130
            [meta_key] => nickname
            [meta_value] => email@domain.com
        )

    [1] => Array
        (
            [umeta_id] => 3222
            [user_id] => 130
            [meta_key] => first_name
            [meta_value] => Jim
        )

    [2] => Array
        (
            [umeta_id] => 3223
            [user_id] => 130
            [meta_key] => last_name
            [meta_value] => Jones
        )
)

Array
(
    [0] => Array
        (
            [umeta_id] => 3221
            [user_id] => 130
            [meta_key] => nickname
            [meta_value] => email@domain.com
        )

    [1] => Array
        (
            [umeta_id] => 3222
            [user_id] => 130
            [meta_key] => first_name
            [meta_value] => John
        )

    [2] => Array
        (
            [umeta_id] => 3223
            [user_id] => 130
            [meta_key] => last_name
            [meta_value] => Jones
        )
)

您可以將array_searcharray_column結合使用以找到適當的索引,以從中獲取值:

$k = array_search('first_name', array_column($array, 'meta_key'));
if ($k !== false) 
    $first_name = $array[$k]['meta_value'];

更籠統地說,您可以編寫一個函數以返回給定鍵的值:

function get_value($array, $key) {
    $k = array_search($key, array_column($array, 'meta_key'));
    if ($k !== false) 
        return $array[$k]['meta_value'];
    else
        return '';
}

echo get_value($array, 'first_name') . PHP_EOL;
echo get_value($array, 'nickname') . PHP_EOL;

輸出:

Jim
email@domain.com

3v4l.org上的演示

隨着foreach

foreach($name_data as $meta_data){
    if("first_name" == $meta_data["meta_key"]){
        echo $meta_data["meta_value"];
    }
}

暫無
暫無

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

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