PHP:根据对象元素的标准提取数组对象元素


PHP: pull array object element based on a criteria of the object element?

我有这个对象数组。但是我只想取出满足一定条件的物体。如果您查看"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

谢谢你看这个

可以,但是你必须自己编写代码,像这样:

$results = array();
foreach ($source as $obj) {
  if (strpos($obj->post_title, ',') === false) {
    $results[] = $obj;
  }
}
// $results will now have the elements filtered

检查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');

你试过了吗?您只需遍历数组并使用相关结果构建一个新数组。或者你可以使用array_filter,像这样:

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