首页 > 解决方案 > lumen,怎么不能显示同名?

问题描述

如果第二个foreach中有相同的名称,我有代码,那么不显示相同的名称,但我不知道如何保持不显示相同的名称?。

$arr = [];
foreach ($respon_tel['item'] as $item) {
     $proyek = [
          'nama_proyek' => $item['judul_kontrak'],
          'from' => 'Another API'
     ];
     foreach($model as $m){
          if(trim(strtolower($item['judul_kontrak'])) == trim(strtolower($m['nama_proyek']))){
          // ????
          }
      }
$arr[] = $proyek;
}
return $arr;

标签: phplaravelapilumen

解决方案


您可以从中获取所有nama_proyek's$model然后您可以检查当前$item'sjudul_kontrak是否在该集合中:

$models = collect($model)
    ->map(fn ($i) => trim(strtolower($i['nama_proyek'])));

foreach ($respon_tel['item'] as $item) {
    if (! $models->contains(trim(strtolower($item['judul_kontrak'])))) {
        $arr[] = [
            'nama_proyek' => $item['judul_kontrak'],
            'from' => 'Another API'
        ];
    }
}

或者您可以使用 Collection 方法获得创意:

collect($respon_tel['item'])
    ->pluck('judul_kontrak', 'judul_kontrak')
    ->map($f = fn ($item) => trim(strtolower($item)))
    ->diff(
        collect($model)->pluck('nama_proyek')->map($f)
    )->map(function ($item, $key) {
        return [
            'nama_proyek' => $key,
            'from' => 'Another API',
        ];
    })->values();

推荐阅读