You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数组调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 16:31:03