按大小排序数组,在​​php中附加价格

时间:2014-02-09 04:13:54

标签: php arrays sorting multidimensional-array

好的,这就是我想要做的,我有3套阵列。所有这些值都来自mysql数据库,直接进入这些数组。

sizetype[]price[] saleprice[]

这是数据库的外观。有一个品牌,它有多种尺寸和价格适用于这些尺寸,如果saleprice exists,我只想使用saleprice并从输出列表中删除price

sizetype | price | saleprice
========   =====   =========

15 Gal   | 35.99 | 34.99

13 Gal   | 32.98 | 29.99

7.5 Gal  | 16.99 |

就sizetype而言

$sizetype array('15 Gal', '13 Gal', '7.5 Gal');

现在我最初对它进行排序的方式是使用这种方法:

sort($sizetype, SORT_NUMERIC);

它工作得很好,但现在我的问题是当我打印排序的大小时,价格显然搞砸了,因为我只排序了sizetype[]。我假设这将需要一个多维数组,但我真的不习惯使用它们。

如果我的解决方案是在这里使用多个deminsional数组,我该怎么做呢,然后排序我的sizetype[]并插入一个我可以在foreach()循环中输出的数组(例如)

sizetype | price
======== | =====

7.5 Gal | 16.99 

13 Gal  | 29.99

15 Gal  | 34.99

如果这令人困惑,那就试着重做并更好地解释一下,谢谢。

2 个答案:

答案 0 :(得分:1)

试试这个:

$newarray = array();
foreach($sizetype as $ind=>$val){

    $newarray[$val] = (isset($saleprice[$ind]) && $saleprice[$ind]!='')? $saleprice[$ind] : $price[$ind] ;  //checking if value exists in $saleprice, if not take $price value
}
ksort($newarray,SORT_NUMERIC); //sorting array in ascending order of keys
var_dump($newarray);

//Displaying
echo 'sizetype | price<br>';
echo '===== | =====<br>';
foreach($newarray as $key=>$val){
    echo $key. " | " .$val."<br>";

}

说明:

我有一个新的数组$newarray[]来保持匹配的元素在一起。

现在在foreach()循环中:

foreach($sizetype as $ind=>$val){ //$sizetype[]包含您在问题中提到的'7.5 Gal', '13 Gal'..之类的值

$newarray[$val] = (isset($saleprice[$ind]) && $saleprice[$ind]!='')? $saleprice[$ind] : $price[$ind] ;我会将其分解,但在此之前,请知道$saleprice[]是另一个包含34.9929.99等值的数组(来自您的问题)

现在$newarray[$val]将是例如$newarray['15 Gal']

(isset($saleprice[$ind]) && $saleprice[$ind]!='')? $saleprice[$ind] : $price[$ind] ;
这转换为 - 如果$saleprice[0]已设置且值不为空,则$newarray['15 Gal'] = $saleprice[0]其他值为$price[0]

这与写作相同:

if(isset($saleprice[$ind]) && $saleprice[$ind]!=''){
   $newarray[$val] = $saleprice[$ind];
}
else
{
   $newarray[$val] = $price[$ind];
}

因此,随着这种情况不断重复,它会检查$saleprice中是否存在值,还是会$price

的值

我不擅长解释代码,但随时可以询问您是否需要更多详细信息。

答案 1 :(得分:0)

而不是排序数组,尝试编写将返回排序值的查询。

e.g。 “选择sizetype,price,From Product group by(saleprice)”;