在MySQL中,我可以从行的一列中选择一个值,其中一列或多列具有指定的值:
SELECT name FROM table WHERE birthyear = '1965' AND birthplace = 'Vancouver'
现在我有一个多维PHP_array(不是mySQL数据库),我想以类似的方式从给定的生日和出生地的行中提取名称。这是数组:
$example = Array
(
[0] => Array
(
[0] => 1965
[1] => Bob
[2] => Vancouver
)
[1] => Array
(
[0] => 1973
[1] => John
[2] => Vancouver
)
[2] => Array
(
[0] => 1965
[1] => Paul
[2] => Houston
)
)
在我看来,对于每个WHERE条件,我需要在PHP中使用一个循环。如果你认为我需要匹配几个列(生日,出生地,性别,职业等),你就会明白这会如何减慢数千个条目的数组的执行速度。
如何以最少的循环执行此操作?
答案 0 :(得分:0)
array_filter($example,function($v) { return $v[0] == 1982; });
答案 1 :(得分:0)
此功能可以满足您的需求:
function getNameByYear($year, array $array) {
$name = false;
foreach ($array as $a) {
if ($a[0] == $year) {
$name = $a[1];
break;
}
}
return $name;
}
用法:
$example; // your array
$n = getNameByYear(1965, $array); // Bob
$n = getNameByYear(1973, $array); // John
$n = getNameByYear(1982, $array); // Paul
$n = getNameByYear('1965', $array); // Bob
$n = getNameByYear('1973', $array); // John
$n = getNameByYear('1982', $array); // Paul
$n = getNameByYear('wrong', $array); // false
$n = getNameByYear(2035, $array); // false