SELECT some_value FROM php_array WHERE other_values (not mys



在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中需要一个循环。如果您假设我需要匹配多个列(生日、出生地、性别、职业等),您就会明白这是如何降低包含数千个条目的数组的执行速度的。

我怎样才能用最少的循环次数做到这一点?

array_filter($example,function($v) { return $v[0] == 1982; });

这个函数将做你正在寻找的:

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

相关内容

  • 没有找到相关文章

最新更新