在我的網站上,用戶可以發佈自己的個人資料在不同的語言,像LinkedIn,現在我們的用戶的姓名之間搜索,比如我們搜索:「ar
」,我們看看所有型材的語言,我們將有一個數組中像回報:PHP陣列 - 排序和優先
array
0 => string '20=>en' (length=5)
1 => string '42=>en' (length=5)
2 => string '20=>fa' (length=5)
3 => string '42=>sp' (length=5)
4 => string '12=>fr' (length=5)
5 => string '83=>ar' (length=5)
6 => string '160=>sp' (length=5)
以上陣列表明,我們已經有了這符合我們搜索「ar
」在不同的語言6個配置文件,上面說數組:
0 => Match found for User with ID = 20 in English Lang(en) profile
1 => Match found for User with ID = 42 in English Lang(en) profile
2 => Match found for User with ID = 20 in Farsi Lang(fa) profile
3 => Match found for User with ID = 42 in Spanish Lang(sp) profile
4 => Match found for User with ID = 12 in French Lang(fr) profile
5 => Match found for User with ID = 83 in Arabic Lang(ar) profile
6 => Match found for User with ID = 160 in Spanish Lang(sp) profile
現在,我們想展示結果,但事實上,當你在結果看,我們已經得到了「ar
」匹配與ID用戶在這兩種English
和Farsi
語言= 20,但我們不能顯示2個結果同一個人!所以我們需要讓腋窩結果去,所以陣列上方應過濾和uniqued基於用戶ID和語言的優先級,我對語言的首要任務是:
- $ _SESSION [「my_lang」] ;
- 英文(en);
- Rand();
誰進入「ar
」作爲他的搜索查詢的人有$_SESSION['my_lang']
,這樣的成績數組,在$_SESSION['my_lang']
結果的用戶,我們應該保持的結果,讓其他比賽中去爲同一人。
$_SESSION['my_lang']
後,我們的首要任務應該是恩朗,如果一個人的N種語言的結果,但我們無法找到匹配的$_SESSION['my_lang']
,那麼我們應該保持的結果恩朗和明確該人的其餘結果。
以上的優先級之後,其實也沒什麼事,我們只需要保持結果的那個人和之一擺脫其他結果的那個人,所以語言應隨機選擇...
我不知道如何完成, 我將不勝感激任何形式的幫助。
在我的例子,我有這樣一個數組:
array
0 => string '20=>en' (length=5)
1 => string '42=>en' (length=5)
2 => string '20=>fa' (length=5)
3 => string '42=>sp' (length=5)
4 => string '12=>fr' (length=5)
5 => string '83=>ar' (length=5)
6 => string '160=>sp' (length=5)
,但在你的榜樣,你有一個數組,如:
$users = array(
array('id'=> 20, 'lang'=>'en'),
array('id'=> 42, 'lang'=>'en'),
array('id'=> 20, 'lang'=>'fa'),
array('id'=> 42, 'lang'=>'sp'),
array('id'=> 12, 'lang'=>'fr'),
array('id'=> 83, 'lang'=>'ar'),
array('id'=> 160, 'lang'=>'sp'));
我應該如何讓我的陣列看像你的數組,所以你的代碼工作..?由於
聽起來好像你可能想在任何執行搜索查詢而不是返回的數據數組中包含這個限制/排序。 –
@MattRazza搜索查詢確實非常複雜,我只是通過很多連接和過濾來計算出來......我更喜歡限制結果,任何想法? – behz4d