好的,这就是我想要做的,我有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
如果这令人困惑,那就试着重做并更好地解释一下,谢谢。
答案 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.99
,29.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)”;