Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除集合中键值对的第二个实例_Php_Laravel_Laravel 5_Collections - Fatal编程技术网

Php 删除集合中键值对的第二个实例

Php 删除集合中键值对的第二个实例,php,laravel,laravel-5,collections,Php,Laravel,Laravel 5,Collections,因此,我试图确定某个应用程序是否属于受下游服务影响的应用程序列表的一部分。以下代码是我目前正在尝试执行的操作: private function createAppArray($apps, $downApps){ $final = collect([]); for($i = 0; $i < count($apps); $i++){ foreach($downApps as $downApp){ i

因此,我试图确定某个应用程序是否属于受下游服务影响的应用程序列表的一部分。以下代码是我目前正在尝试执行的操作:

  private function createAppArray($apps, $downApps){

        $final = collect([]);
        for($i = 0; $i < count($apps); $i++){
            foreach($downApps as $downApp){
                if($apps[$i]->id == $downApp->aid){
                    $test = collect($apps[$i]);
                    $final->push($test->merge(['status' => 'warning']));
                    $i++;
                } 
            }
        }


        if($final->count() < count($apps)){
            foreach($apps as $app){
                $test = collect($app);
                $final->push($test->merge(['status' => 'success']));
            }
            // dd($final);
        }


        return $final;
    }
私有函数createAppArray($apps,$downApps){
$final=收取([]);
对于($i=0;$iid==$downApp->aid){
$test=collect($apps[$i]);
$final->push($test->merge(['status'=>'warning']);
$i++;
} 
}
}
如果($final->count()push($test->merge(['status'=>'success']);
}
//dd(最终);
}
返回$final;
}
从下面的屏幕截图中可以看出,由于我将
$apps
的内容附加到包含受影响应用程序的最终集合中,因此它将应用程序复制为向上和向下

另附
dd($final)
的内容:

基本上,我需要做的是删除此集合中重复的应用程序的第二个实例


因此,如果
id
是第二次出现,那么请删除该集合,有人能帮我完成这个我似乎无法理解的任务吗?

与其创建两个单独的循环并尝试合并结果,还不如通过循环整个应用程序列表($apps)来减少大量代码并检查ID是否存在于$downApps集合中

private function createAppArray($apps, $downApps) {
    $final = collect([]);
    foreach($apps as $app){

        $test = collect($app);

        // check to see if the down apps collection as this app
        if (!$downApps->where('aid', $app->id)->isEmpty()){
            $final->push($test->merge(['status' => 'warning']));
        } else {
            $final->push($test->merge(['status' => 'success']));
        }
    }

    return $final;
}

此方法使逻辑更易于阅读。

如何将元素自身合并?比如$final=$final->merge($final)@雨果迪亚斯,我的收藏量翻了一番,这正是我想要做的,因为某种原因,我的大脑今天不能正常工作!非常感谢你,干杯,伙计!很乐意帮忙!我以前去过那里。有时,第二对眼睛会有帮助。