Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-带有引用或类似引用的数组_过滤器_Php - Fatal编程技术网

PHP-带有引用或类似引用的数组_过滤器

PHP-带有引用或类似引用的数组_过滤器,php,Php,我有一个如下的数组 $a = array( array("id" => 1, "name" => "njx", "count" => 0), array("id" => 2, "name" => "peter", "count" => 4), array("id" => 3, "name" => "jeffry", "count" => 2), a

我有一个如下的数组

$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);
});
然后我对变量
$fa
应用了
usort
。之后,我通过
$fa
循环并分配了一些值,但它们不会反映在变量
$a

像下面这样

usort($fa, 'comp');

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

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

因此,我的问题是如何使用原始数组引用获取筛选数组?

数组\u筛选器返回一个新数组而不是引用,这就是为什么应用于$fa的任何更改都不会反映在$a中的原因

您可以使用如下foreach循环,而不是使用array_filter:

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

然后使用usort进行排序。

使用$a=array\u filter($a,…否)。然后我将丢失计数<0的项目。我需要它们。如果您显示所需的输出片段,其他人将更容易理解。只要array\u filter将保留键,您就可以执行
foreach($faKey=>dummy)$a[$faKey]['score']=120;
因此它需要在
$fa
上进行另一个循环,并根据
id
检查分配
分数
?我不能获得仍保留对
$a?
引用的筛选数组吗