PHP: вытащить элемент массива объекта на основе критерия элемента объекта? - PullRequest
0 голосов
/ 31 декабря 2011

У меня есть этот массив объектов. Однако я хочу вытащить только тот объект, который соответствует определенным критериям. Если вы посмотрите на ключ "post_title", я хочу вытащить объект, только если он не содержит запятой. Возможно ли это?

Так что в моем примере ниже я хочу извлечь массив в индексе 2, поскольку он является единственным, у которого нет запятой в ключе "post_title".

Array
(
    [0] => stdClass Object
        (
            [ID] => 504
            [post_title] => Playroom (Black, Custom 2)
        )

    [1] => stdClass Object
        (
            [ID] => 503
            [post_title] => Playroom (Black, Custom 1)

        )

    [2] => stdClass Object
        (
            [ID] => 252
            [post_title] => Play (Black)

        )

)
1

Спасибо, что посмотрели на это.

Ответы [ 3 ]

0 голосов
/ 31 декабря 2011

проверка функции array_filter - http://php.net/manual/en/function.array-filter.php

$myArray = /*snip*/;

function titleDoesNotContainComma($object) {
    return strpos($object->post_title, ',') === false; 
}

$filteredArray = array_filter($myArray, 'titleDoesNotContainComma');
0 голосов
/ 31 декабря 2011

Что вы пробовали?Вы можете просто использовать массив и создавать новый массив с соответствующими результатами.В качестве альтернативы вы можете использовать array_filter, что-то вроде этого:

function hasComma( $object ) {
  if( strpos( $object->post_title, ',' ) ) {
    return false;
  } else {
    return true;
  }
}

var_dump( array_filter( $array, 'hasComma' ) );
0 голосов
/ 31 декабря 2011

Да, вы можете, но вам придется кодировать его самостоятельно, например:

$results = array();
foreach ($source as $obj) {
  if (strpos($obj->post_title, ',') === false) {
    $results[] = $obj;
  }
}
// $results will now have the elements filtered
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...