2017-01-19 3 views
0

Im mit min(), um den günstigsten Preis aus einem Array, aber es zeigt die teure anstelle der billigen. Ich muss auch alle Daten aus dem billigen Preis-Array bekommen.bekommen günstigen Preis mit min() aus Array

Code

$dumpData = array(); 

    if (!empty($dumpData) && is_array($dumpData)) { 

    $minPriceArray = min($dumpData['data']); 

    $price = $func->convert_amount($minPriceArray['currency'], get_currency(), $minPriceArray['price']); 
    echo '<span class="price"><small>From</small> '.$price.' '.get_currency().'</span>'; 

    }else{ 
    echo '<span class="price">No data found</span>'; 
    } 

Array

array(4) { 
    [0]=> 
    array(8) { 
    ["logo"]=> 
    ["price"]=> 
    int(649) 
    ["currency"]=> 
    string(3) "" 
    ["availability"]=> 
    string(7) "instock" 
    }, 
    [1]=> 
    array(8) { 
    ["logo"]=> 
    ["price"]=> 
    int(849) 
    ["currency"]=> 
    string(3) "" 
    ["availability"]=> 
    string(7) "instock" 
    }, 
    [2]=> 
    array(8) { 
    ... 
    }, 
    [3]=> 
    array(8) { 
    ... 
    } 

} 
+0

Implementieren Sie 'min()' für dieses ganze Array (mit Sub-Arrays)? –

+0

$ min = min (array_column ($ array, 'price')); –

+0

vielleicht beachtenswert, dass 'array_column' ist nur nach Version 5.5 verfügbar. Verwirrt durch das obige Code-Snippet - zuerst deklariert man '$ dumpData = array();' und prüft dann 'if (! Empty ($ dumpData) && is_array ($ dumpData)) {'??? – RamRaider

Antwort

1
function find_min_price_array($arr) { 
    $prices = array_column($arr, 'price'); 
    $min_price = min($prices); 

    $min_price_array = array(); 

    foreach($arr as $key => $value) { 
     if($value['price'] == $min_price) { 
      $min_price_array[] = $value; 
     } 
    } 

    return $min_price_array; 
} 

var_dump(find_min_price_array($arr)); 

Die benutzerdefinierte Funktion find_min_price_array das Array zurückgibt, die den Mindestpreis enthält. Es gibt auch die Arrays zurück, die denselben Mindestpreis enthalten.

array_column gibt alle Werte einer Spalte im mehrdimensionalen Array zurück. array_column($arr, 'price') erhalten Sie alle Preise in den Arrays und dann können Sie den Mindestwert einfach mit min Funktion finden. Dann können Sie den Mindestpreis gegen den Preis jedes Arrays in dem mehrdimensionalen Array in der Schleife überprüfen.

Hoffe es hilft!

+0

danke Sir, es funktioniert super :) – Zoric

+0

Gern geschehen, bro! :) – Perumal

+0

@Anant Kein Problem. Dein Code funktioniert perfekt. Was die zusätzliche Sache, die er benötigt, ist, das Array zu bekommen, das minimalen Preis enthält. Er möchte nicht nur den Mindestpreis, sondern auch die damit verbundene Preisspanne. – Perumal