【问题标题】:Clean an array in Laravel在 Laravel 中清理数组
【发布时间】:2022-02-22 23:10:48
【问题描述】:

我有一个函数,它通过 Laravel 中的查询从数据库中检索值数组。我需要清理那个数组

从这里: 2022-02-21 07:40:16

对此: 07:40:16

我该怎么办?

函数是这样的:

public function singleDev(Device $deviceID)
{
    $data = DataFromRasp::where('MAC', 'C4:A5:DF:24:05:7E')->get()->pluck('RSSI', 'created_at')->toArray();
    $time_array = [];
    $rssi_array = [];
    $cnt = 0;
    foreach ($data as $key => $value) {
        array_push($time_array, $key);
        array_push($rssi_array, $value);
        if ($value < -60) {
            $cnt++;
            if ($cnt >= 2) {
   
            }
        }
    }
    dd($time_array);
    
    return view('backend.auth.user.singleDevice', compact("time_array", "rssi_array"));
}

【问题讨论】:

  • 你想只显示时间而不是完整的日期时间吗?
  • 没错,我只需要时间
  • 那你为什么在后端做,即控制器端只在刀片模板文件上使用碳的格式功能。
  • 因为我需要将它们添加到图表中
  • 检查我的解决方案。

标签: arrays laravel


【解决方案1】:

试试这个

public function singleDev(Device $deviceID){
        $data = DataFromRasp::select('RSSI', 'created_at')->where('MAC', 'C4:A5:DF:24:05:7E')->get();
        $time_array = [];
        $rssi_array = [];
        $cnt = 0;
        foreach($data as $dataItem){
            array_push($time_array, $dataItem->created_at->format('H:i:s'));
            array_push($rssi_array, $dataItem->RSSI);
            if($value < -60){
                $cnt++;
                if($cnt >=2){

                }
            }
        }
        dd($time_array);

        return view('backend.auth.user.singleDevice', compact("time_array", "rssi_array"));
    }

【讨论】:

  • 我犯了一个错误。 $dataItem-&gt;created_at-&gt;format('H:i:s') 而不是 $dataItem-&gt;format('H:i:s')。已编辑。
  • 它给了我这个错误:调用 int 上的成员函数 format()
  • 现在我有错误:尝试获取非对象的属性'created_at'
  • 请出示$data得到的代码
  • 这是我从数据库中检索到的数据:imgur.com/a/GgvY18d
【解决方案2】:

您可以使用 Laravel 集合方法的强大功能,例如 map、pluck 和缩短解决方案。

$data = DataFromRasp::select('RSSI', 'created_at')->where('MAC', 'C4:A5:DF:24:05:7E')->map(function($d) {
    $d->timeValue = $d->created_at->format('H:i:s');
    return $d;
});

$time_array = $data->pluck('timeValue')->toArray();
$rssi_array = $data->pluck('RSSI')->toArray();

【讨论】:

  • 它不起作用...调用未定义的方法 Illuminate\Database\Eloquent\Builder::map()
  • 删除get 方法。检查我的更新答案。
  • 我不使用get方法
  • 我在解释我的答案。只需使用最新的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
  • 1970-01-01
  • 2014-03-29
  • 1970-01-01
相关资源
最近更新 更多