PHP如何从多维数组中选择>或<的值

时间:2018-12-11 16:01:38

标签: php arrays multidimensional-array filter

我不知道如何获得所需的值。我试图过滤我的数组上的值。

#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       
        )
)

正如您在我的代码块中看到的那样,我正在尝试创建一个由> =和<=过滤的新数组。例如,#resultant array仅包含[2]大于(> =)大于30并且小于或等于(<=)大于40的记录。

我确实找到了无量纲数组的答案,但是我不知道如何在我的应用程序中使用它,请参见:php numeric array select values greater than a number and lower than another and save it to a new array

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

我希望我提供了足够的信息,如果没有,请随时发表评论。感谢您的阅读,希望我能找到可以帮助我的东西。

干杯科迪

3 个答案:

答案 0 :(得分:0)

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

public class QuizScript : MonoBehaviour {
  public System.Collections.Generic.Dictionary<string, int> characteristic = new Dictionary<string, int>();

  //public int snake = 0;
  //public int centipede = 0;

  //constructor initializes your set
  public QuizScript() {
        characteristic.Add("snake",0);
        characteristic.Add("centipede",0);          
  }

  public void Q2C1() //question 2 choice 1
  {
      characteristic["snake"] += 1;
      Debug.Log("Snake = " + characteristic["snake"].ToString()); //for me to see if it works
  }

  public void Q3C1() //question 3 choice 1
  {
      characteristic["centipede"] += 1;
      Debug.Log("Centipede = " + characteristic["centipede"].ToString());
  }
}

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

答案 1 :(得分:0)

您可以只使用foreach,如果条件检查代码在下面:    

$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;

答案 2 :(得分:0)

例如

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

要定位字符串“ item1”,您可以使用

调用数组中的第一项
echo $array[0];

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

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

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

$array[1][0];

您将$array内第二个数组的第一项作为目标