如何验证传入的数据在数组中是唯一

我做了连接查询出三个字段的值并转为数组

$timetable_info = Timetable::leftjoin('real_courses', 'timetables.real_course_id', 'real_courses.id')
            ->leftjoin('courses', 'real_courses.course_id', 'course_id')
            ->select('timetables.date','timetables.time', 'courses.teacher_id')
            ->get()
            ->toArray();

以下是返回值

array:2 [0 => array:3 ["date" => 1
    "time" => 1
    "teacher_id" => 2
  ]
  1 => array:3 ["date" => 1
    "time" => 2
    "teacher_id" => 2
  ]
]

我想验证下面三个字段传入的值在数组中是唯一,应该怎么做

$where = [
    'date'=> $request->date,
    'time'=> $request->time,
    'teacher_id'=>$teacher_id
];
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4

foreach 呗,还能咋办。

$where = [
    'date' => 20220201,
    'time' => 1202,
    'teacher_id' => 1,
];
$array = [
    0 => [
        'date' => 20220201,
        'time' => 1202,
        'teacher_id' => 1,
    ],
    1 => [
        'date' => 20220201,
        'time' => 1202,
        'teacher_id' => 1,
    ],
    2 => [
        'date' => 20220202,
        'time' => 1203,
        'teacher_id' => 3,
    ]
];

$count = 0;
foreach ($array as $value) {
    if (empty(array_diff_assoc($value, $where)) && $count++ > 1) {
        break;
    }
}


if ($count > 1) {
    echo '条件不唯一';
} else {
    echo '条件唯一';
}
1年前 评论

$arr = $arr[md5($value)] = $value isset($arr[md5($where)])

1年前 评论
laravel_peng

使用集合的方式:

  • 举个例子:跳转
    file

  • 修改代码如下

    # 修改代码 - 先不用 toArray() 方法
    $timetable_info_col = Timetable::leftjoin('real_courses', 'timetables.real_course_id', 'real_courses.id')
              ->leftjoin('courses', 'real_courses.course_id', 'course_id')
              ->select('timetables.date','timetables.time', 'courses.teacher_id')
              ->get();
    # 根据条件查询数量
    $nums = $timetable_info_col->where('date', $request->date)->where('time', $request->time)->where('teacher_id', $request->teacher_id)->count();
    if ($nums == 1) {
     echo '是唯一的';
    }
1年前 评论

查的时候 添加个字段 把值都组合起来这样方便点

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!