PHP проверяет значение ключа объекта массива без использования цикла / foreach

Просто чтобы изучить больше техник в PHP, я так использую цикл foreach, и я хочу найти некоторые другие способы проверки объекта массива. Скажем, если у нас есть результат что-то вроде этого:

 Array
(
[0] =; stdClass Object
(
[gallery_id] => 38
[artist_id] => 58
[title] => Appearances
[description] => Appearances
[photo_file] =>
[status] => 1
[insert_timestamp] => 2014-08-07 03:27:23
[update_timestamp] => 2014-08-07 15:26:24
[url] => talents/58/photos/38/Appearances
[position] =>
)

[1] => stdClass Object
(
[gallery_id] => 36
[artist_id] => 58
[title] => Endorsements
[description] => Endorsements
[photo_file] =>
[status] => 1
[insert_timestamp] => 2014-08-07 03:17:28
[update_timestamp] => 2015-01-13 15:50:09
[url] => talents/58/photos/36/Endorsements
[position] => 1
)

[2] => stdClass Object
(
[gallery_id] => 34
[artist_id] => 58
[title] => Magazine Covers
[description] => Magazine Covers
[photo_file] =>
[status] => 1
[insert_timestamp] => 2014-08-07 02:54:27
[update_timestamp] => 2015-01-13 15:50:10
[url] => talents/58/photos/34/Magazine-Covers
[position] => 2
)
)

Я знаю, что мы можем сделать что-то вроде этого, чтобы проверить значение в объекте:

$myFlag = 2;

foreach($objArr as $obj){

if($obj->position == $myFlag){

return true;
}

}

Но есть ли способ проверить это без использования цикла? Более эффективный способ, потому что я чувствую, всякий раз, когда я использую это (большую часть времени), это не так эффективно и как-то требует времени для обработки.

0

Решение

Как насчет использования array_filter с замыканием.

$myFlag = 2;
$target = array_filter($objArr, function($elem) use($myFlag){
return $elem->position === $myFlag;
});

print_r($target);

результат …

Array
(
[2] => stdClass Object
(
[gallery_id] => 34
[artist_id] => 58
[title] => Magazine Covers
[description] => Magazine Covers
[photo_file] =>
[status] => 1
[insert_timestamp] => 2014-08-07 02:54:27
[update_timestamp] => 2015-01-13 15:50:10
[url] => talents/58/photos/34/magazine-covers
[position] => 2
)

)
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]