数组调用find()方法报错及根据ID获取指定数组元素的问题
问题解决:Call to a member function find() on array
错误原因
你的$data是普通PHP数组,而find()是Laravel集合(Collection)专属方法,普通数组无法直接调用该方法,因此触发这个错误。
两种可行解决方案
方案1:转Laravel集合调用find()
如果是在Laravel项目中,只需把数组转为集合,find()方法会自动根据元素的id字段匹配对应项:
public function payments($id){ $data = [ ['id' => 1, 'amount' => '22000', 'name' => 'ken'], ['id' => 2, 'amount' => '24000', 'name' => 'ken'], ['id' => 3, 'amount' => '26000', 'name' => 'ken'], ['id' => 4, 'amount' => '2000', 'name' => 'tom'], ]; return collect($data)->find($id); }
方案2:原生PHP方法查找
如果不想依赖Laravel集合,用原生PHP的循环或数组过滤函数也能实现:
用array_filter过滤
public function payments($id){ $data = [ ['id' => 1, 'amount' => '22000', 'name' => 'ken'], ['id' => 2, 'amount' => '24000', 'name' => 'ken'], ['id' => 3, 'amount' => '26000', 'name' => 'ken'], ['id' => 4, 'amount' => '2000', 'name' => 'tom'], ]; $matched = array_filter($data, fn($item) => $item['id'] === $id); return reset($matched); // 取出第一个匹配项,无匹配时返回false }
用foreach循环遍历
public function payments($id){ $data = [ ['id' => 1, 'amount' => '22000', 'name' => 'ken'], ['id' => 2, 'amount' => '24000', 'name' => 'ken'], ['id' => 3, 'amount' => '26000', 'name' => 'ken'], ['id' => 4, 'amount' => '2000', 'name' => 'tom'], ]; foreach ($data as $item) { if ($item['id'] === $id) { return $item; } } return null; // 无匹配项时返回null }
内容的提问来源于stack exchange,提问作者penina kinanu
相关产品推荐
相关产品推荐

