扫码查看文章
public function findById(int $groupId, int $wxappId): ?array
{
$row = $this->videoGroup($wxappId)
->where('group_id', $groupId)
->find();
return $row ? $row->toArray() : null;
}
中的?array是什么意思?怎么使用?
这是 PHP 7.1+ 的「可为 null 返回类型」语法 ,叫 Nullable Return Type 。
?array
意思是: 这个方法要么返回 array,要么返回 null ,两种类型都合法。
| 写法 | 含义 |
|---|---|
: array |
必须返回数组,返回null会直接抛 TypeError |
: ?array |
可以返回数组,也可以返回null |
| 不加类型 | 想返回啥都行(无约束) |
public function findById(int $groupId, int $wxappId): ?array
{
$row = $this->videoGroup($wxappId)
->where('group_id', $groupId)
->find();
return $row ? $row->toArray() : null;
}
return $row->toArray() → array ✅return null → null ✅如果写成 : array 又 return null, PHP 会直接报错 :
TypeError: Return value must be of type array, null returned
?array 而不是 array在业务语义上,你这个方法是 「可能找不到」 的查询:
$group = $model->findById($id, $wxappId);
if (!$group) {
throw new Exception('分组不存在');
}
?array → 调用方一眼就知道要判空array → 要么你返回空数组 [](语义模糊),要么就报错👉 null 表达「不存在」比 [] 更准确
?| 场景 | 推荐 |
|---|---|
| 单条查询(find) | ?array✅ |
| 列表查询(select) | array✅(查不到返回[]就行) |
| 统计 count | int✅ |
| 新增返回 ID | int或?int(失败可能 false) |
find(); // 查不到返回 null
select(); // 查不到返回空 Collection(转 toArray() 是 [])
所以:
find() → 返回类型用 ?arrayselect()->toArray() → 返回类型用 array
来团科技GEO优化&AI搜索优化系统,是通过大模型内容投喂+训练,将企业品牌及产品信息在多平台AI生成的答案中获取优先展现,更精准触达潜在目标客户,让企业品牌出现在AI搜索里。让客户一搜就看到你,实现一问就有你,一查就信你,一看就找你的营销效果。
来团智慧商业小程序零代码开发平台,多行业适配。无需代码,拖拽式设计,轻松打造订货商城、会员制商城、分销商城及小程序官网。不仅能满足通用需求,还支持定制化,从页面布局到功能模块,随心定制,助您快速搭建专属商业小程序,抢占市场先机。
来团科技微名通不止是电子名片,更是你的商业连接器。比起传统名片,它更像你的 “迷你商业工具”:信息多、好携带、能互动,还不浪费纸张。不管是跑业务、拓人脉,还是展示企业,一张「微名通」电子名片,就能帮你把商机揣在手机里。
来团科技CRM客户管理系统,帮你把 “线索→成交→回款” 全流程管明白。这就是一套 “让销售省心、老板放心” 的客户管理工具,从获客到回款,帮你把生意攥在手里。
来团科技 2016-2026 沪公网安备31011402022095号 沪ICP备19004216号-2
来团QQ客服