dsdxlibt98300 2014-02-27 10:34
浏览 86
已采纳

创建一个组合多个数组的唯一数组

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 ?

  • 写回答

2条回答 默认 最新

  • dongshiru5913 2014-02-27 11:01
    关注
    $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>";
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入