iT邦幫忙

0

<已解決>php - array_unique 排序問題

請教各位
我在迴圈中使用array_unique這語法,echo 後發現去除重複的資料都跑到陣列的最後面
https://ithelp.ithome.com.tw/upload/images/20200727/201271212xr82AndCU.jpg
我試過以下兩種方法,都沒辦法改變排序(都還是排在最後...)
1.asort($array);
2.array_multisort($array);

程式碼如下 :

<?php

while($row = $result->fetch(PDO::FETCH_ASSOC)){
	$final = array_unique($row);	
			
	$result_1 = $pdo->query($sql);		
					
	while($row_1 = $result_1->fetch(PDO::FETCH_ASSOC)){
			
		$bbb = round((strtotime(substr($row_1['end_at'], 0, 17) . "00") - strtotime(substr($row_1['start_1'], 0, 17) . "00")) / (60), 2);

		if($final['arbpl'] ==$row_1['arbpl']){
            $final['total_time'] += $bbb ;
		}
	}
					
		if($final['arbpl']=='' and $final['total_time']==''){
			continue;
		}
				
		if($final['total_time']==''){
			$final['total_time'] === 0;
		}
				
echo "['".$final{'arbpl2'}."',".$final{'total_time'}."],";
			   
}
?>

我的解決方式如下 : 串空白字串判斷資料是否出現過
https://ithelp.ithome.com.tw/upload/images/20200730/201271213LPhLRVRDv.jpg

2 個回答

1
rogeryao
iT邦高手 1 級 ‧ 2020-07-27 10:29:43

何不試試在 SQL下 Order by

s1031532 iT邦新手 5 級 ‧ 2020-07-27 10:35:13 檢舉

我sql出來的資料是不用做order by 是後面這段 php 造成順序跑掉,
所以只能在程式這裡再做排序

fillano iT邦超人 1 級 ‧ 2020-07-28 09:25:50 檢舉

要去除重複,怎麼不下group by

1
浩瀚星空
iT邦超人 1 級 ‧ 2020-07-27 10:50:10

用sql資料來下sql。
你真的有一顆很大的心。

從程式內看不到你用 asort 的地方。
但我估計你誤會了asort的用法。

不過你有找到 array_multisort 的方法還不錯。
只是這個函數的用法比較特殊。你需要一個補助陣列來使用。
要不然二維性的東西並不好排序。

如果可以,請將你比較完整的做法貼出來。
目前單單從你的資料中,我沒辦法給你正常答案。

畢竟你也沒說你要依??做排序依據。

另外附帶一提,理論上,你這的確可以在sql內就可以搞定。不需要在程式上做排序了。
跳拖一下自已的錯誤思維,把人家說的想進去一下吧。

我要發表回答

立即登入回答