【问题标题】:strtotime() expects parameter 1 to be string, array given in laravelstrtotime() 期望参数 1 是字符串,laravel 中给出的数组
【发布时间】:2020-10-01 06:52:12
【问题描述】:

我想在开始时间和结束时间之间设置时间段并显示用户的责任,但我得到这个错误:strtotime() 期望参数 1 是字符串,给定数组

这是控制器:

$model=doc::findOrFail($ID);
$ReturnArray = array ();// Define output
$StartTime    = strtotime ($model->Lun_mat_de) ; //Get Timestamp
$EndTime      = strtotime ($model->Lun_mat_a); //Get Timestamp
$duration = '60';

$AddMins  = $duration * 15;

 //Run loop
while ($StartTime <= $EndTime) {
    $ReturnArray[] = date ("G:i", $StartTime);
    $StartTime += $AddMins; //Endtime check
}

return view ('/rendezvous',['go'=> $model],['jaja'=>$ReturnArray] );

这是视图:

<div class="div1" ></div>
 @foreach($jaja as $ja)
     <button class="btn btn-info"> {{$ja}} </button> </br>
 @endforeach

这是模型:

  protected  $table = 'doctor' ;

       protected $casts = [
        'Lun_mat_de' =>'array',
        'Lun_apres_a' =>'array',
        ];

【问题讨论】:

  • print_r($model-&gt;Lun_mat_de) 显示什么?
  • ["8:30","12h30"]

标签: php json laravel


【解决方案1】:

你在你的模型转换中定义了Lun_mat_de =&gt; array 所以 $model->Lun_mat_de 总是返回一个数组。所以strtotime ($model-&gt;Lun_mat_de) 会崩溃。修复 casts 字段

【讨论】:

  • 这实际上并不能帮助解决问题,这只是澄清了问题所在,这已经很明显了
【解决方案2】:

正如预期的那样,值$model-&gt;Lun_mat_dearray variable 类型而不是字符串。

来自评论:

  • print_r($model->Lun_mat_de) 显示什么?
  • ["8:30","12h30"]
  • 对了,就是一个数组,你想把这些值中的哪一个变成时间值?
  • Lun_mat_de' 和 'Lun_mat_a'
  • 不,您告诉我$model-&gt;Lun_mat_de 为您提供了一个包含两个值的数组,您需要选择您希望PHP function strtotime 处理这两个值中的哪一个。 8:30 还是 12:30?
  • 哦,对不起,是的8:30

好的, 所以要让strtotime 函数在8:30 上工作,你可以输入:

$StartTime    = strtotime ($model->Lun_mat_de[0]); //8:30

要让strtotime 函数作用于另一个值,12h30,那么您将引用另一个数组值:

$StartTime    = strtotime ($model->Lun_mat_de[1]); //12h30

(我假设这里的数组是整数键控)

推荐阅读:

请阅读关于arraystring 类型以及函数strtotime 的PHP 手册条目。

此外,您实际上应该可能会继续使用DateTime function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    • 2018-08-04
    • 1970-01-01
    • 2018-02-22
    • 2018-11-10
    • 2017-08-08
    • 2017-09-23
    相关资源
    最近更新 更多