2016-04-18 2 views
0

Я хочу, чтобы отсортировать второй массив ($ array2) на основе первого массива ($ поле [ «Choices»])Сортировка массива на основе другого массива

$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 ['choice']). – 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

Смежные вопросы