我有一个多维数组,如下所示:
array(2) {
[0]=>
array(8) {
["id"]=>
string(3) "117"
["promotiontype_id"]=>
string(1) "1"
["groupa_id"]=>
string(3) "390"
["groupb_id"]=>
string(3) "390"
["varx"]=>
string(1) "2"
["vary"]=>
string(1) "1"
["varz"]=>
string(0) ""
["totaldiscount"]=>
float(6.5)
}
[1]=>
array(8) {
["id"]=>
string(3) "117"
["promotiontype_id"]=>
string(1) "1"
["groupa_id"]=>
string(3) "390"
["groupb_id"]=>
string(3) "390"
["varx"]=>
string(1) "2"
["vary"]=>
string(1) "1"
["varz"]=>
string(0) ""
["totaldiscount"]=>
float(7.0)
}
}
因此,正如您将看到的,第一个数组的“totaldiscount”为6.5,第二个数组为7.0。
本质上,我需要删除包含最低值的数组,因此在这个实例中,将删除array [0],因为6.5具有最低的“totaldiscount”。该数组可以包含2个以上的子数组。
我认为这与预备通过有关,但我的大脑会因此而崩溃!
非常感谢任何帮助!
答案 0 :(得分:0)
我将把你的问题分为两部分:
如何找到x的最低值?
function lowestX($array){
$lowest = 999;
for($array as $var){
if($lowest > $var["totaldiscount"]){
$lowest = $var["totaldiscount"];
}
}
}
如何从数组中删除值?
答案 1 :(得分:0)
一种可能的解决方案是使用usort按“totaldiscount”
对数组进行排序然后从排序的数组中获取最低的“totaldiscount”值。
然后你可以循环排序的数组(如果有多个“totaldiscount”值具有相同的最低值)并使用数组键取消设置包含$lowestTotaldiscount
的数组。
例如:
<?php
function cmp($a, $b)
{
return ($a["totaldiscount"] < $b["totaldiscount"]) ? -1 : 1;
}
usort($arrays, "cmp");
$lowestTotaldiscount = $arrays[0]["totaldiscount"];
foreach($arrays as $key => $array) {
if ($array["totaldiscount"] === $lowestTotaldiscount) {
unset($arrays[$key]);
}
}
答案 2 :(得分:0)
这里是您的问题的解决方案。只需使用array_multisort&amp;未设置如下。 `
$yourArray = array(
array(
"id"=>"117",
"promotiontype_id"=>"1",
"groupa_id"=>"390",
"groupb_id"=> "390",
"varx"=>"2",
"vary"=>"1",
"varz"=> "",
"totaldiscount"=>8.5,
),
array (
"id"=> "117",
"promotiontype_id"=>"1",
"groupa_id"=>"390",
"groupb_id"=>"390",
"varx"=>"2",
"vary"=>"1",
"varz"=>"",
"totaldiscount"=>7.0,
),
array (
"id"=> "117",
"promotiontype_id"=>"1",
"groupa_id"=>"390",
"groupb_id"=>"390",
"varx"=>"2",
"vary"=>"1",
"varz"=>"",
"totaldiscount"=>9.0, )
);
$discount = array();
foreach ($yourArray as $key => $row)
{
$discount[$key] = $row['totaldiscount'];
}
array_multisort($discount, SORT_ASC, $yourArray);
unset($yourArray[0]);
print"<pre>";
print_r($yourArray);`