1

我有一个像下面这样的数组。

$a = array(
            array("id" => 1, "name" => "njx", "count" => 0),
            array("id" => 2, "name" => "peter", "count" => 4),
            array("id" => 3, "name" => "jeffry", "count" => 2),
            array("id" => 4, "name" => "adam", "count" => 6)
          );

并像这样应用过滤器。

$fa = array_filter($a, function ($item) {
    return ($item["count"] > 0);
});

然后我申请usort了变量$fa。之后我循环$fa并分配了一些值,但它们没有反映在变量中$a

像下面的东西,

usort($fa, 'comp');

foreach ($fa as &$t) {
    $t["score"] = 120;
}

var_dump($a); //this doesn't contain "score" field.

所以我的问题是如何使用原始数组引用获得过滤数组?

4

1 回答 1

3

array_filter 返回一个新数组而不是引用,这就是为什么应用于 $fa 的任何更改都不会反映在 $a 中。

您可以使用这样的 foreach 循环,而不是使用 array_filter:

foreach($a as &$t) {
    if($t['count'] > 0) {
        $t['score'] = 120;
    }
}

然后使用 usort 排序。

于 2013-11-13T11:09:01.673 回答