0

MySQL では、1 つ以上の列が指定された値を持つ行の 1 つの列から値を選択できます。

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 で 1 つのループが必要になるように思えます。複数の列 (誕生日、出生地、性別、職業など) を一致させる必要があると仮定すると、これが何千ものエントリを含む配列で実行を遅くする方法を理解できます。

最小数のループでこれを行うにはどうすればよいですか?

4

2 に答える 2

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
于 2013-03-02T18:24:28.920 に答える
0
array_filter($example,function($v) { return $v[0] == 1982; });
于 2013-03-02T16:50:06.757 に答える