2016-04-18 213 views
0

我希望根據第一陣列($字段[「選擇」])上的第二陣列($數組2)排序排序陣列

$field_name = "field_52f8fcdd21cb6"; 
$field = get_field_object($field_name); 

foreach($field['choices'] as $k=>$v) { 
    echo $k."==".$v."<br>"; 
} 

上面的代碼給我以下輸出

Gyana Yagna==Gyana Yagna 
Festival==Festival 
Retreat==Retreat 
Performance==Performance 
Swaranjali==Swaranjali 

現在第二陣列開始

echo "<br><br><br>"; 
$array2 = array("Gyana Yagna","Gyana Yagna","Gyana Yagna","Retreat","Festival","Festival"); 

foreach($array2 as $k=>$v) 
{ 
    if(in_array($v,$field['choices'])) 
    { 
     echo $array2[$k]."<br>"; 
    } 
    else 
    { 
     echo $array2[$k+1]."<br>"; 
    } 
} 

希望的輸出應是

Gyana Yagna 
Gyana Yagna 
Gyana Yagna 
Festival 
Festival 
Retreat 

而我得到以下輸出

Gyana Yagna 
Gyana Yagna 
Gyana Yagna 
Retreat 
Festival 
Festival 

任何幫助,高度讚賞。提前致謝。

+0

輸出錯誤,因爲您正在循環第二個數組,因此$ array2 [3],返回$ v =「Retreat」,然後由in_array($ v,$ field ['choices'])函數使用該函數。 – Abbasi

回答

1

這是基於我的評論的解決方案:

$field['choices']= array('Gyana Yagna', 'Festival', 'Retreat'); 


echo "<br><br><br>"; 
$array2 = array("Gyana Yagna","Gyana Yagna","Gyana Yagna","Retreat","Festival","Festival"); 

foreach($field['choices'] as $k=>$v) 
{ 
foreach($array2 as $k2=>$v2){ 
    if($v==$v2) 
     { 
      echo $array2[$k2]."<br>"; 
     } 
} 

} 

和輸出端與您所需的輸出。

+0

非常感謝。它像魅力一樣工作。再次感謝。 – Raj

+0

歡迎,我的榮幸.. – Abbasi