Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.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 返回意外结果的数组\u筛选器_Php_Arrays_Array Filter - Fatal编程技术网

Php 返回意外结果的数组\u筛选器

Php 返回意外结果的数组\u筛选器,php,arrays,array-filter,Php,Arrays,Array Filter,我有一个如下所示的数组: Array ( [0] => Array ( [pizza] => Calzone [votes] => 1 [id] => 1 ) [1] => Array ( [pizza] => Margherita [votes] => 5 [id] => 2 ) [2] => Array

我有一个如下所示的数组:

Array
(
[0] => Array
    (
        [pizza] => Calzone
        [votes] => 1
        [id] => 1
    )

[1] => Array
    (
        [pizza] => Margherita
        [votes] => 5
        [id] => 2
    )

[2] => Array
    (
        [pizza] => Pepperoni
        [votes] => 9
        [id] => 3
    )

[3] => Array
    (
        [pizza] => Quattro Formaggi
        [votes] => 3
        [id] => 4
    )

[4] => Array
    (
        [pizza] => Sloppy Giuseppe
        [votes] => 7
        [id] => 5
    )

)
[0] => Array
    (
        [pizza] => Pepperoni
        [votes] => 9
        [id] => 3
    )
当我这样做的时候:

function getPizza () {
    $id = 3;

    return array_filter($myArrayAsAbove, function ($arr) use ($id) {
        return ($arr['id'] == $id);
    });
}
我明白了:

[2] => Array
    (
        [pizza] => Pepperoni
        [votes] => 9
        [id] => 3
    )
我相信这是正确的,但我真的希望:

Array
(
[0] => Array
    (
        [pizza] => Calzone
        [votes] => 1
        [id] => 1
    )

[1] => Array
    (
        [pizza] => Margherita
        [votes] => 5
        [id] => 2
    )

[2] => Array
    (
        [pizza] => Pepperoni
        [votes] => 9
        [id] => 3
    )

[3] => Array
    (
        [pizza] => Quattro Formaggi
        [votes] => 3
        [id] => 4
    )

[4] => Array
    (
        [pizza] => Sloppy Giuseppe
        [votes] => 7
        [id] => 5
    )

)
[0] => Array
    (
        [pizza] => Pepperoni
        [votes] => 9
        [id] => 3
    )
注意
0
而不是
2


有人能帮我找到一个解决方案吗?如果你真的很好,请解释一下为什么会发生这种情况,以及如何解决它——这样我下次就知道了

array_filter()的文档特别指出:

保留数组键

如果要重置键,也可以使用类似于array_merge()的方法


array_filter()的文档特别说明:

保留数组键

如果要重置键,也可以使用类似于array_merge()的方法


array\u filter
保留数组键。如果不需要它们,
array\u values
只提供“包装在新数组中”的值:


array\u filter
保留数组键。如果不需要它们,
array\u values
只提供“包装在新数组中”的值:

重新索引数组


重新为数组编制索引。

您可以使用
array\u values()
重新创建索引:

return array_values(array_filter($myArrayAsAbove, function ($arr) use ($id) {
    return ($arr['id'] == $id);
}));

您可以使用
array\u values()
重新创建索引:

return array_values(array_filter($myArrayAsAbove, function ($arr) use ($id) {
    return ($arr['id'] == $id);
}));
发生这种情况的原因是,正如前面所说,数组键被保留。由于Pepperoni在原始矩阵中有键2,所以它会将该键保留在返回的矩阵中。这是因为正如所说的,数组键被保留。由于Pepperoni在原始矩阵中有密钥2,因此它将该密钥保留在返回的矩阵中。