php - 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;
解决方案
您可以从中获取所有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();
推荐阅读
- symfony - 尽管使用了 token_provider,但仍会发送 REMEMBERME cookie
- r - 获取字符串中特定位置的多个字符替换的所有组合
- compilation - 有没有办法在不使用 QTEMP/QSQLPRE 的情况下使用 crtsqlrpgle 进行编译?
- sql - 更改标识列以在 SQL Server 中添加复合键
- database - 可以直接将前端连接到数据库吗?
- email - 由于 Spamhaus 列表,Sendgrid 电子邮件发送下降
- flutter - Flutter - SingleChildScrollView 不滚动到键盘打开的列底部
- reactjs - 使用 reactJS 制作推荐奖励系统
- java - 在杰克逊已经配置了原始超类型之后动态添加新的子类型
- ansible - 每个列表的第一项附加到 ansible playbook 中的另一个列表