考虑以下数组:
$serviceNames = array(
0 => array(
'language' => 'en',
'value' => 'something',
'type' => 'name',
),
1 => array(
'language' => 'fi',
'value' => 'jotain',
'type' => 'name',
),
2 => array(
'language' => 'sv',
'value' => 'någonting',
'type' => 'name',
),
);
我需要获取基于语言的“值”定义。有问题的部分是数组$serviceNames
没有预定义的长度(最初是来自API的JSON文件),并且项可以按任何顺序排列(在我的示例中为en,fi,sv ,但可能是de,en,sv,fr ...明白了。
如果我想在“语言”等于“ en”的数组中获取“值”,我该怎么做?
答案 0 :(得分:2)
我的建议是使数组具有关联性。
完成后,您可以通过"serviceBus": {
// The maximum number of concurrent calls to the callback the message
// pump should initiate. The default is 16.
"maxConcurrentCalls": XYZ,
}
访问该值。
["language"]["value"]
答案 1 :(得分:1)
简单:
$serviceNames = array(
0 => array(
'language' => 'en',
'value' => 'something',
'type' => 'name',
),
1 => array(
'language' => 'fi',
'value' => 'jotain',
'type' => 'name',
),
2 => array(
'language' => 'sv',
'value' => 'någonting',
'type' => 'name',
),
);
function myfunction(array $serviceNames, $field)
{
foreach($serviceNames as $service)
{
if ( $service['language'] === $field )
return $service['value'];
}
return false;
}
echo myfunction($serviceNames, 'en');
输出将为something
答案 2 :(得分:0)
您将必须使用foreach
语句遍历数组的每个元素。
类似:
function getValueForLang($lang, array $arr)
{
foreach ($arr as $desc) {
if ($desc['language'] == $lang) {
return $arr['value'];
}
}
return null;
}
getValueForLang('en', $serviceNames); // gets your value, null if not found
另请参阅:
https://secure.php.net/manual/en/control-structures.foreach.php
答案 3 :(得分:0)
您可以使用array_search()
和array_column()
功能。首先找到数组中“ en”所在的键,然后获取值。
$key = array_search('en', array_column($serviceNames, 'language'));
echo $serviceNames[$key]['value'];