获取特定键的数组值

我想得到meta_value如果meta_key上面等于的值,first_name我该怎么做?


我正在做以下事情:


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

这不起作用,因为meta_value并不总是在该[1]位置。


这是数据,有数百个这样的条目,但数据都混在一起(即相同的数据并不总是在 0,1,2 等数组中)。


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

        )

)


胡子哥哥
浏览 139回答 2
2回答

万千封印

您可以使用array_searchwitharray_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;输出:Jimemail@domain.com

一只斗牛犬

与foreach,foreach($name_data as $meta_data){    if("first_name" == $meta_data["meta_key"]){        echo $meta_data["meta_value"];    }}
打开App,查看更多内容
随时随地看视频慕课网APP