如何更优雅的写这段代码

<?php
$taskArray = array('1', '2', '3', '4', '5'); // 一个任务队列
$deviceArray = array('Coolpad8705', 'HM2014011'); // 设备列表
foreach($taskArray AS $t) {
    $task = $model->get($t); // 获取这个任务的信息
    $a = false;
    foreach($deviceArray AS $device) {
        // 判断这个设备是否存在
        if ($model->is($device) == false) {
            $a = true;
            break;
        }
    }
    if ($a === false) continue;
}
阅读 4k
7 个回答

两句continue;是没用的。
请区分continue;break;的效果。
不写这两句没有任何影响,换成break;可以减少循环次数。

优雅什么的……
简洁、有效、有注释就好。
IDE会自动处理好格式的。

$model->is 是什么作用?

<?php
$taskArray = array('1', '2', '3', '4', '5');
$deviceArray = array('Coolpad8705', 'HM2014011');
$task = $model->get(5);

我明白 楼主的意思

楼主 用了 一个 n * m 复杂度的运算 去做这件事情,

楼主希望 优化一下能不能改成 n 复杂度的,提高效率是吧。

foreach($taskArray AS $t) {
    $task = $model->get($t);
    // $a = false;
    // foreach($deviceArray AS $device) {
    //     if ($model->is($device) == false) {
    //         $a = true;
    //         break;
    //     }
    // }
    // if ($a === false) continue;
    if ( ! in_array($model->device(), $deviceArray))
        // do something
}
ids = [1, 2, 3, 4, 5]
target_device_names = ['Coolpad8705', 'HM2014011']

def is_target_device(task_id):
  o = Model.get(task_id)
  return any(o.is(x) for x in target_device_names)

target_ids = [x for x in ids if is_target_device(x)]

嗯,我就是来砸场子的~

$model->get是什么意思

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题