Here, I have the following variable $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
)
)
But i need to create second array $countries containing only unique values:
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
)
)
For spliting by (,) i have used the below method
foreach ($countries_all as $list){
$countrieslist=explode(',', $list->countries);
foreach ($countrieslist as $uni_countries){
echo $uni_countries;
}
}
but how to get unique values, from the above case.
could anyone help me
Thanks in advance.
EDIT1
Here i have one more query related to above question.
Now i got the unique values,
how can i get results from database from that unique values
For example, i want all the results which are having(like) country as 'India'
The array_unique function is what you are looking for.
$countries = array();
foreach ($countries_all as $list){
$countrieslist=explode(',', $list->countries);
foreach ($countrieslist as $country){
$countries[] = $country;
}
}
$countries = array_unique($countries);
$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);
Try this:
$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;
}
}
}
$uniqueCoutries contains all found coutries, without duplicates
$commasplit = function ($list) { return explode(',', $list->countries); };
$countrieslist = array_unique(call_user_func_array('array_merge', array_map($commasplit, $countries_list)));
You may try this
$countrieslist = array();
foreach ($countries_all as $list){
$countrieslist[] = explode(',', $list->countries);
}
$array = array_unique(array_reduce($countrieslist,'array_merge', array()));