duan111112 2018-08-10 21:01
浏览 25

使用数组过滤器重写

How would I write the following foreach with some conditions using array_filter?

 foreach ($categories as $category) {
        if ($this->request->getParam('category_id')) {
            if ($category->getCategoryId() == $this->request->getParam('category_id')) {
                $selectedCategory = $category;
                break;
            }
        } else {
             No category id in request. Select the first one.
            if (array_key_exists(0, $categoryTree) &&
                $category->getCategoryId() == $categoryTree[0]['id']
            ) {
                $selectedCategory = $category;
                break;
            }
        }
    }
  • 写回答

2条回答 默认 最新

  • doudaotui4297 2018-08-10 21:17
    关注

    First off, using array_filter isn't helpful in this case as it reduces an array instead of selecting an element. But to show its principles, you could rewrite the code to something like this.

    if($this->request->getParam('category_id')){
      $filteredCategories = array_filter($categories, function ($category) use ($this){
        return $category->getCategoryId() == $this->request->getParam('category_id');
      });
      if(count($filteredCategories)>0){
        return $filteredCategories[0];
      }
    } else {
      [...]
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 关于用pyqt6的项目开发该怎么把前段后端和业务层分离
  • ¥30 线性代数的问题,我真的忘了线代的知识了
  • ¥15 有谁能够把华为matebook e 高通骁龙850刷成安卓系统,或者安装安卓系统
  • ¥188 需要修改一个工具,懂得汇编的人来。
  • ¥15 livecharts wpf piechart 属性
  • ¥20 数学建模,尽量用matlab回答,论文格式
  • ¥15 昨天挂载了一下u盘,然后拔了
  • ¥30 win from 窗口最大最小化,控件放大缩小,闪烁问题
  • ¥20 易康econgnition精度验证
  • ¥15 msix packaging tool打包问题