簡體   English   中英

如何在多維php數組中進行范圍搜索

[英]How to make range search in multidimentional php array

我有一個多維數組,我需要一些范圍值,例如:我想從10,000到20,000搜索下面給出了數組示例:

  Array
  (
      [0] => Array
    (
        [name] => sample1
        [price] => 10000
    )

[1] => Array
    (
        [name] => sample1
        [price] => 18000
    )

[2] => Array
    (
        [name] => sample1
        [price] => 22000
    )

[3] => Array
    (
        [name] => sample1
        [price] => 14000
    )

   )

我如何從數組中獲取選定的值范圍。

使用array_filter()

$min = 10000;
$max = 20000;
$selectedRange = array_filter(
    $myOriginalArray,
    function ($value) use ($min, $max) {
        return (($value >= $min) && ($value <= $max));
    }
);

盡管如果此數據來自數據庫查詢,最好使用WHERE子句在此進行過濾

function filterArray($search_array, $min, $max)
{
    $returned_array = [];
    foreach($search_array as $array_item)
    {
        $price = $array_item["price"];
        if($price >= $min && $price <= $max) $returned_array[] = $array_item;
    }
    return $returned_array;
}

給定您的最小值和最大值,這將返回一個經過過濾的數組

好的,我能給您的最好答案就是為此編寫類似array_walk的內容。 第二個要約(如果您需要對新數組執行其他操作)是使用array_filter,如按鈕所示。

<?php

$min = 14000;
$max = 19000;

function array_walk_example($item, $key)
{
    global $min,$max;
    if ($item["price"] > $min && $item["price"] < $max){
        echo $key. $item["price"]."<br />\n";
    }
}

$array = Array
  (
      0 => Array
    (
        "name" => "sample1",
        "price" => 10000
    ),

1 => Array
    (
        "name" => "sample2",
        "price" => 18000
    ),

2 => Array
    (
        "name" => "sample3",
        "price" => 22000
    ),

3 => Array
    (
        "name" => "sample4",
        "price" => 14000
    ),

);

array_walk($array, "array_walk_example");

function array_filter_example($value){
    global $min,$max;
var_dump($value);
        return (($value['price'] >= $min) && ($value['price'] <= $max));

}

$range = array_filter($array,"array_filter_example");
var_dump($range);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM