4

次のような foreach ループでこれを行うことができると思います。

 foreach ($haystack as $item)
       if (isset($item->$needle_field) && $item->$needle_field == $needle)
            return true;
 } 

しかし、ループなしでできるかどうか迷っていましたか?

何かのようなもの:

  if(in_array($item->$needle_field == $needle,$haystack)
            return true;
4

4 に答える 4

4

それは可能ですが、それ以上のことはありません:

<?php
function make_subject($count, $success) {
    $ret = array();
    for ($i = 0; $i < $count; $i++) {
        $object = new stdClass();
        $object->foo = $success ? $i : null;
        $ret[] = $object;
    }
    return $ret;
}

// Change true to false for failed test.
$subject = make_subject(10, true);

if (sizeof(array_filter($subject, function($value) {
    return $value->foo === 3;
}))) {
    echo 'Value 3 was found!';
} else {
    echo 'Value 3 was not found.';
}

出力しValue 3 was found!ます。

for ループのままにしておくことをお勧めします。これは、行を保存するためのトリックとは異なり、判読可能です。

于 2013-09-10T23:04:36.897 に答える