php 有没有更好的写我的函数,并避免多个返回[关闭]

yws3nbqq  于 2022-12-28  发布在  PHP
关注(0)|答案(1)|浏览(127)
    • 已关闭**。此问题为opinion-based。当前不接受答案。
    • 想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。

昨天关门了。
Improve this question
我正在写一个函数,我有多个返回值,我觉得有一个更好的方法来写我的函数,我应该在我的array_filter中使用usort,这就是我的想法。
这是我的职责

public function initializeTopics($data): array
{
    $topics = $data['topics'];
    // sort topics by expiry date, closes first
    usort($topics, function($first, $next) {
       if(is_null($first['expiryDate'])) return 1;
       if(is_null($next['expiryDate'])) return -1;
       // otherwise ascending
       return $first['expiryDate'] <=> $next['expiryDate'];
    });
    
    return array_filter($topics, function ($var) {
       return (in_array($var['statusName'], $this->statusToSchedule));
    });
}

有没有更好的方法来写,因为我用了很多的return

vuktfyat

vuktfyat1#

你可以稍微修改一下usort(),但这取决于你的expiryDate字段的外观。我们不知道。假设你存储的日期如下:“2022-12-26”,那么你可以做:

usort($topics, function($topicA, $topicB) {
   return ($topicA['expiryDate'] ?? '0000-00-00') <=> 
          ($topicB['expiryDate'] ?? '9999-99-99');
});

使用空合并算子。
如果你的expiryDate是一个正整数,你可以这样做:

usort($topics, function($topicA, $topicB) {
   return ($topicA['expiryDate'] ?? 0) <=>
          ($topicB['expiryDate'] ?? PHP_INT_MIN);
});

显然,usort()函数需要一个return,这并没有错。

相关问题