PHP数组过滤器,并根据过滤后的数组结果创建新数组

时间:2020-03-31 05:35:09

标签: php arrays

所以当var dump时,我有一个变量$offices['results']会像这样输出:

array() {
  [0]=>
  object(stdClass)#16067 (24) {
    ["id"]=>
    string(1) "4"
    ["blog_id"]=>
    string(2) "10"
    ["office_name"]=>
    string(0) "Japan"
  }
  [1]=>
  object(stdClass)#16064 (24) {
    ["id"]=>
    string(1) "5"
    ["blog_id"]=>
    string(2) "11"
    ["office_name"]=>
    string(0) "USA"
  }
[2]=>
  object(stdClass)#16064 (24) {
    ["id"]=>
    string(1) "5"
    ["blog_id"]=>
    string(2) "12"
    ["office_name"]=>
    string(0) "USA"

  }
}

我只想创建一个blog_id1012的新数组变量,它将返回:

array() {
  [0]=>
  object(stdClass)#16067 (24) {
    ["id"]=>
    string(1) "4"
    ["blog_id"]=>
    string(2) "10"
    ["office_name"]=>
    string(0) "Japan"
  }   
[1]=>
  object(stdClass)#16064 (24) {
    ["id"]=>
    string(1) "5"
    ["blog_id"]=>
    string(2) "12"
    ["office_name"]=>
    string(0) "USA"

  }
}

我尝试使用array_filter,但无法正常工作。

$array = $offices['results'];

$like = '11','12';

$result = array_filter($array, function ($item) use ($like) {
    if (stripos($item['blog_id'], $like) !== false) {
        return true;
    }
    return false;
});
var_dump($result);

希望您能帮助我。谢谢

2 个答案:

答案 0 :(得分:1)

未经测试,但是用array_filter()怎么办?

$filterBy = [10,12];
$array = $offices['results'];
$newArray = array_filter($array, function ($var) use ($filterBy) {
    return in_array($var->blog_id,$filterBy);
});

答案 1 :(得分:1)

您可以遍历此array并检查blog_id是否存在

但首先,让我们为您要的array分配一个blog_id

$blogs = [10, 12];

之后,您可以开始遍历数据

$result = [];
foreach($data as $blog){
  if(in_array($blog->blog_id, $blogs)){
     $result[] = $blog;
  }
}