过滤二维数组并保留列值落在限定数字范围内的行

问题描述 投票:0回答:3

我不知道如何获得所需的值。我正在尝试根据数组的值过滤数组。

#current array
Array
(
    [0] => Array
        (
            [0] => Product1 
            [1] => Description product 1
            [2] => 10
        )

    [1] => Array
        (
            [0] => Product2
            [1] => Description product 2
            [2] => 20       
        )

    [2] => Array
        (
            [0] => Product3
            [1] => Description product 3  
            [2] => 30    
        )

    [3] => Array
        (
            [0] => Product4
            [1] => Description product 4  
            [2] => 40    
        )

    [4] => Array
        (
            [0] => Product5
            [1] => Description product 5  
            [2] => 50    
        )
)

#resultant array
Array
(
    [0] => Array
        (
            [0] => Product3 
            [1] => Description product 3
            [2] => 30
        )

    [1] => Array
        (
            [0] => Product4
            [1] => Description product 4
            [2] => 40       
        )
)

正如您在我的代码块中看到的,我正在尝试创建一个按 >= 和 <=. For example the

#resultant array
过滤的新数组,仅包含 [2] 大于 (>=) 30 且小于或等于 (<=) than 40.

) 的记录

我确实找到了无维数组的答案,但我不知道如何在我的应用程序中使用它,请参阅:php numeric array 选择大于一个数字且小于另一个数字的值并将其保存到新数组

我只是不知道如何编写/构建这段代码,我还想要两个变量;例如 $min = 30 和 $max = 40。

php arrays multidimensional-array filtering numeric
3个回答
1
投票

您可以使用 array_filter 根据条件过滤数组:

<?php
    $data = array
    (
        0 => array
        (
            0 => 'Product1',
            1 => 'Description product 1',
            2 => '10'
        ),
        1 => array
        (
            0 => 'Product2',
            1 => 'Description product 2',
            2 => '20'
        ),
        2 => array
        (
            0 => 'Product3',
            1 => 'Description product 3',
            2 => '30'
        ),
        3 => array
        (
            0 => 'Product4',
            1 => 'Description product 4',
            2 => '40'
        ),
        4 => array
        (
            0 => 'Product5',
            1 => 'Description product 5',
            2 => '50'
        )
    );

    $data = array_filter($data, function($el)
    {
        return ($el[2] >= 30 && $el[2] <= 40);
    });

    echo '<pre>'. print_r($data, 1) .'</pre>';

在这里,您可以将一个函数传递到第二个回调中,并以这种方式设置条件。


0
投票

您可以只使用 foreach 和 if 条件检查代码如下:

$array=Array();
$array[]=array('Product1','Description product 1',10);
$array[]=array('Product2','Description product 2',20);
$array[]=array('Product3','Description product 3',30);
$array[]=array('Product4','Description product 4',40);
$array[]=array('Product5','Description product 5',50);

// code
$array2=array();
foreach($array as $row)
{

    if($row[2] >=30 and $row[2] <=40)
        $array2[]=$row;


}

#resultant array
print_r($array2);

die;

0
投票

例如

$array = [
  0 => "item1",
];

要定位字符串“item1”,您可以通过 with 调用数组中的第一项

echo $array[0];

要使用多维数组,您可以这样做

$array = [ 0 => [ 0 => 'item1', 1 => 'item2', ] 1 => [ 0 => 'item3', 1 => 'item4', ] ]

要定位例如字符串“item3”,您可以使用此

$array[1][0];

在这里,您的目标是第二个数组中的第一项

$array


    

© www.soinside.com 2019 - 2024. All rights reserved.