【问题标题】:PHP filter array functionPHP过滤数组函数
【发布时间】:2023-03-20 11:19:01
【问题描述】:

我需要一个过滤器作为函数。我已经有了:

<?php

$array = array(
    array('name' => 'John Doe', 'email' => 'john@gmail.com'),
    array('name' => 'Marry Lies', 'email' => 'marry@gmail.com'),
    array('name' => 'Andrew Joe', 'email' => 'andrew@gmail.com'),
);

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

我需要它作为一个函数:

function filter($array,$like,$kol)

我怎样才能使上面的代码在一个函数中工作。请把整个代码写在这里。

【问题讨论】:

  • 以上代码返回行 [0] 和 [2]。如何让它按顺序返回行,以便返回 [0] 和 [1]?
  • array_values() 将为您重新排序数组。

标签: php function multidimensional-array filter filtering


【解决方案1】:

你快到了。问题是当使用array_filter 时(如the manual page 上的小字所述),数组键被保留。要重新索引结果,您可以通过array_values 运行它,这会将键重置为从零开始。

作为一个函数,它可能如下所示:

function filter($array, $like, $kol) {
    $filtered = array_filter($array, function ($item) use ($kol, $like) {
        return stripos($item[$kol], $like) !== false;
    });
    
    return array_values($filtered);
}

完整演示:https://3v4l.org/slCeX

【讨论】:

    猜你喜欢
    • 2018-05-04
    • 2018-11-01
    • 1970-01-01
    • 2016-07-05
    • 2016-05-24
    • 1970-01-01
    • 2020-10-30
    • 2017-05-14
    • 2012-08-07
    相关资源
    最近更新 更多