【发布时间】:2017-08-25 21:09:46
【问题描述】:
我使用此代码在多维数组上搜索一对值和键
当 lang 为 "en" 时我需要提取 pair 的值
它对我有用,但我认为它不是 PHP 7 的好代码
$arr = [['lang' => null, 'title' => 'Main kaff'],
['lang' => 'en', 'title' => 'May way'],
['lang' => 'es', 'title' => 'Mi camino'],
['lang' => 'fr', 'title' => 'Mon chaimin']];
$key = "lang";
function multiSearch(array $array, array $pairs)
{
$found = array();
foreach ($array as $aKey => $aVal) {
$coincidences = 0;
foreach ($pairs as $pKey => $pVal) {
if (array_key_exists($pKey, $aVal) && $aVal[$pKey] == $pVal) {
$coincidences++;
}
}
if ($coincidences == count($pairs)) {
$found[$aKey] = $aVal;
}
}
return $found;
}
$x = multiSearch($arr, array('lang' => 'en'));
var_dump($x);
结果正确
array(1) {
[1]=>
array(2) {
["lang"]=>
string(2) "en"
["title"]=>
string(7) "May way"
}
}
【问题讨论】:
-
这个问题可能更适合Code Review SE。
-
如果你像这样构造数组会容易得多:
$arr['lang']['en']['title'] = 'May way'; -
@ZachGates 哎呀,我不知道这个地方。是否可以移动问题?
-
有可能,但我没有足够高的声誉来做这件事。希望高级用户或版主可以为您做到这一点。
标签: php arrays multidimensional-array php-7