Reputation: 699
I have the following code in PHP
foreach ($events as $event)
{
$event = $event->organiser;
var_dump($event);
}
Then i am getting output like for $event
array
0 => string '40138' (length=5)
1 => string '40137' (length=5)
array
0 => string '40140' (length=5)
1 => string '40138' (length=5)
Next i am creating a loop to get values as per the above ID (40137,40138) in to one array, here i want to create a unique array. How to do that ?
So as per the unique ID i can create the following UI
foreach ($events as $event)
{
if(!empty($event->organiser)){
if(is_array($event->organiser)){
foreach ($event->organiser as $organiser){
$mentors_entities = get_entity($organiser);
$name = $mentors_entities->title;
$img = $vars['url'].'mod/mentor/icon.php?mentorguid='.$organiser;
$body .= "<div class='event_mntdes'><div class='event_mntimg'><img src=".$img.'&size=large'."></div><div class='event_mntcontent'><b>".$name."</b><br/>".elgg_get_excerpt($mentors_entities->mentorshrt,'150')."</div></div>";
}
}else{
$organiser = $event->organiser;
$mentors_entities = get_entity($organiser);
$name = $mentors_entities->title;
$img = $vars['url'].'mod/mentor/icon.php?mentorguid='.$organiser;
$body .= "<div class='event_mntdes'><div class='event_mntimg'><img src=".$img.'&size=large'."></div><div class='event_mntcontent'><b>".$name."</b><br/>".elgg_get_excerpt($mentors_entities->mentorshrt,'150')."</div></div>";
}
}
}
So how to get the unique array combining of multiple array ?
Upvotes: 0
Views: 66
Reputation: 3646
$organisers = array_reduce($events, function($ids, $el){ //lets collect all the ids in one array
if(is_array($el->organiser)){
$ids = array_merge($ids, $el->organiser);
}else{
$ids[] = $el->organiser;
}
return $ids;
}, array());
$orgsUnique = array_unique($organisers); //leave only uniqie ids
foreach ($orgsUnique as $organiser)
{
//do what you need...
$mentors_entities = get_entity($organiser);
$name = $mentors_entities->title;
$img = $vars['url'].'mod/mentor/icon.php?mentorguid='.$organiser;
$body .= "<div class='event_mntdes'><div class='event_mntimg'><img src=".$img.'&size=large'."></div><div class='event_mntcontent'><b>".$name."</b><br/>".elgg_get_excerpt($mentors_entities->mentorshrt,'150')."</div></div>";
}
For php under 5.3 (when lamba-functions weren't supported):
function reduceFunc($ids, $el){
if(is_array($el->organiser)){
$ids = array_merge($ids, $el->organiser);
}else{
$ids[] = $el->organiser;
}
return $ids;
}
$organisers = array_reduce($events, 'reduceFunc', array()); //lets collect all the ids in one array
$orgsUnique = array_unique($organisers); //leave only uniqie ids
foreach ($orgsUnique as $organiser)
{
//do what you need...
$mentors_entities = get_entity($organiser);
$name = $mentors_entities->title;
$img = $vars['url'].'mod/mentor/icon.php?mentorguid='.$organiser;
$body .= "<div class='event_mntdes'><div class='event_mntimg'><img src=".$img.'&size=large'."></div><div class='event_mntcontent'><b>".$name."</b><br/>".elgg_get_excerpt($mentors_entities->mentorshrt,'150')."</div></div>";
}
Upvotes: 1
Reputation: 11665
Not sure if this is what you looking for, but the below code makes sure your ID is not printed twice:
$rec_values = array(); // will store the array values
if(!empty($event->organiser)){
if(is_array($event->organiser)){
foreach ($event->organiser as $organiser){
//checks if ID has been entered before
//if not, display it
if(!in_array($organiser,$rec_values)){
$mentors_entities = get_entity($organiser);
$name = $mentors_entities->title;
$img = $vars['url'].'mod/mentor/icon.php?mentorguid='.$organiser;
$body .= "<div class='event_mntdes'><div class='event_mntimg'><img src=".$img.'&size=large'."></div><div class='event_mntcontent'><b>".$name."</b><br/>".elgg_get_excerpt($mentors_entities->mentorshrt,'150')."</div></div>";
$rec_values[] =$organiser; //record the ID
}
}
}else{
//same for the else part
if(!in_array($organiser,$rec_values)){
$organiser = $event->organiser;
$mentors_entities = get_entity($organiser);
$name = $mentors_entities->title;
$img = $vars['url'].'mod/mentor/icon.php?mentorguid='.$organiser;
$body .= "<div class='event_mntdes'><div class='event_mntimg'><img src=".$img.'&size=large'."></div><div class='event_mntcontent'><b>".$name."</b><br/>".elgg_get_excerpt($mentors_entities->mentorshrt,'150')."</div></div>";
$rec_values[] =$organiser; //record the ID
}
}
}
Upvotes: 1