0

次のような配列があります。

$array = array(
    array('Field1' => 'red',  'Field2' => 'green',   'Field3' => 'blue'),
    array('Field1' => 'pink', 'Field2' => 'pinkish', 'Field3' => 'barbiecolor'),
    array('Field1' => 'red',  'Field2' => 'blue', '   Field3' => 'orange')
);

そして、指定された値でこれを確認したい:

$searchBy = array('Field1' => 'red', 'Field2' => 'blue');

私が達成したいのは、すべての連想キーと値のペアが一致した親配列を返すことです。やってみin_array()たけどうまくいかない..

4

2 に答える 2

3

array_filterこれにはより良いかもしれません:

$matches = array_filter($array,function($a) use ($searchBy) {
    foreach($searchBy as $k=>$v) {
        if( $a[$k] != $v) return false;
    }
    return true;
});
于 2013-04-21T19:29:59.547 に答える
1

あなたが試すことができます:

$find = array_filter($array, function ($a) use($searchBy) {
    return array_intersect_assoc($searchBy, $a) == $searchBy;
});

ライブデモを見る

オールドスクールバージョン

$find = find($searchBy, $array);
print_r($find);

// Function used
function find($needle, $haystack) {
    $r = array();
    foreach ( $haystack as $k => $a ) {
        array_intersect_assoc($needle, $a) == $needle and $r[$k] = $a;
    }
    return $r;
}

オールドスクールデモ

于 2013-04-21T20:22:50.237 に答える