2013-09-28 4 views
0

Здесь я имею следующий переменный $ countries_all:выбрать только определенные значения из массива

Array ( 
    [0] => stdClass Object 
     ( 
      [countries] => India,Afghanestan,Japan,South Africa 
    ) 
    [1] => stdClass Object 
     ( 
      [countries] => Singapore,South Africa,India,Pakistan 
    ) 
    [2] => stdClass Object 
     ( 
      [countries] => Japan,Australia,India 
    ) 
) 

Но мне нужно, чтобы создать вторую страну массива $, содержащую только уникальные значения:

Array ( 
    [0] => stdClass Object 
     ( 
      [countries] => India 
    ) 
    [1] => stdClass Object 
     ( 
      [countries] => Afghanestan 
    ) 
    [2] => stdClass Object 
     ( 
      [countries] => Japan 
    ) 
    [3] => stdClass Object 
     ( 
      [countries] => South Africa 
    ) 
    [4] => stdClass Object 
     ( 
      [countries] => Singapore 
    ) 
    [5] => stdClass Object 
     ( 
      [countries] => Pakistan 
    ) 
    [6] => stdClass Object 
     ( 
      [countries] => Japan 
    ) 
    [7] => stdClass Object 
     ( 
      [countries] => Australia 
    ) 
) 

Для spliting by (,) i использовал метод ниже:

foreach ($countries_all as $list){ 
    $countrieslist=explode(',', $list->countries); 
    foreach ($countrieslist as $uni_countries){ 
     echo $uni_countries; 
    } 
} 

но как получить уникальные значения, из приведенного выше случая.

может мне помочь

Заранее спасибо.

EDIT1

Здесь у меня есть еще один вопрос, касающийся выше вопрос.

Теперь я получил уникальные значения,

как я могу получить результаты из базы данных из того, что уникальных значений

Например, я хочу, чтобы все результаты, которые имеют (например) страну, как «Индия»

+0

Где вы получаете $ странам? Предполагается, что это $ uni_countries? – OIS

+0

ha жаль только $ uni_countries – user123456789

ответ

2

Функция array_unique - это то, что вы ищете.

$countries = array(); 
foreach ($countries_all as $list){ 
    $countrieslist=explode(',', $list->countries); 
    foreach ($countrieslist as $country){ 
     $countries[] = $country; 
    } 
} 
$countries = array_unique($countries); 
1
$newlist = array(); 
foreach ($countries_list as $list){ 
    $countrieslist=explode(',', $list->countries); 
    foreach ($countrieslist as $uni_countries){ 
     echo $uni_countries; 
     $newlist[] = $uni_countries){ 
    } 
} 
array_unique($newlist); 
0

Попробуйте это:

$uniqueCountries = array(); 

foreach ($countries_list as $list){ 
    $countrieslist=explode(',', $list->countries); 
    foreach ($countrieslist as $country){ 
     if (!in_array($country, $uniqueCountries)) { 
      //adding to list 
      $uniqueCountries[] = $country 
     } else { 
      echo $country, ' already in list', PHP_EOL; 
     } 
    } 
} 

$ uniqueCo utries содержит все найденные coutries, без дубликатов

1
$commasplit = function ($list) { return explode(',', $list->countries); }; 
$countrieslist = array_unique(call_user_func_array('array_merge', array_map($commasplit, $countries_list))); 
1

Вы можете попробовать это

$countrieslist = array(); 
foreach ($countries_all as $list){ 
    $countrieslist[] = explode(',', $list->countries); 
} 
$array = array_unique(array_reduce($countrieslist,'array_merge', array())); 

An Example.

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