2014-02-09 34 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更快。 –