如果上面的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
)
)
答案 0 :(得分:1)
您可以将array_search
与array_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
答案 1 :(得分:0)
使用foreach
,
foreach($name_data as $meta_data){
if("first_name" == $meta_data["meta_key"]){
echo $meta_data["meta_value"];
}
}