2014-02-09 32 views
1

好吧,这就是我想要做的,我有3组数组。所有这些值都来自mysql数据库,并直接进入这些数组。按大小排序数组,并附上价格php

sizetype[]price[]saleprice[]

数据库本的外观。有一个品牌,它有这些尺寸的数量和价格,也如果saleprice exists,我想只使用saleprice和eleminate 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 

如果这是令人困惑的,生病尝试重做并更好地解释它,谢谢。

回答

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]; 
} 

因此as这将不断重复,它会检查值是否存在于$saleprice或它将取值$price

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

+0

能否请你解释一下你的foreach循环是如何工作的,我很迷茫。 – Sickest

+0

@Sickest新增,请检查更新后的帖子。 –

+1

** + 1 **,为整洁而详细的解释! –

0

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

例如“选择sizetype,价格,从产品组(出售价格)”;

+0

我不寻找工作,我的代码要求我使用这种方法。 – Sickest

+0

这不是一种解决方法,而是解决您遇到的问题的正确方法。搜索后,MySQL搜索查询将比php更快。 –