Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php v7.0.13时数组到字符串转换错误_Php_Arrays_String_Laravel_Php 7 - Fatal编程技术网

使用php v7.0.13时数组到字符串转换错误

使用php v7.0.13时数组到字符串转换错误,php,arrays,string,laravel,php-7,Php,Arrays,String,Laravel,Php 7,我的laravel控制器文件中有以下代码 $j_decode->$data['_kfdTourDate']->available = ($j_decode->$data['_kfdTourDate']->available+$totalincrement); 我得到了以下错误 BookingsController.php第325行中的ErrorException:数组到字符串 BookingsController.php第325行中的转换 HandleExceptio

我的laravel控制器文件中有以下代码

$j_decode->$data['_kfdTourDate']->available = ($j_decode->$data['_kfdTourDate']->available+$totalincrement); 
我得到了以下错误

BookingsController.php第325行中的ErrorException:数组到字符串 BookingsController.php第325行中的转换 HandleExceptions->handleError('8','数组到字符串转换', 'D:\XAMPP\htdocs\lara\app\Http\Controllers\BookingsController.php', '325',数组('request'=>对象(请求),'id'=>'0','rules'=> 数组(),'validator'=>对象(验证器),'data'=>数组(''u kpnID'=> ‘153290’、‘kfnTourID’=>‘2’、‘kfdTourDate’=>‘2017-03-16’, 'nAdults'=>'2','nChildren'=>'1','nInfants'=>'0','nBabies'=> ‘2’、‘nFOC’=>‘2’、‘Nprice成人’=>‘74.25’、‘nPriceChild’=>‘49.5’, “nPriceBaby”=>“0”、“nPriceBaby”=>“0”、“nTotalPrice”=>“148.5”, 'tGuestName'=>'Yuhiko Nishioka','tGuestOrigin'=>'Unknown', 'tEnquirySourceWhat'=>'未知','tStatus'=>'确认', “\u kfnAgentID'=>0',”\u kfnPersonID'=>0',“\u kfnInvoiceID'=>0', 'nAgentCommissionPercent'=>'0','nDiscount\u percent'=>'0', “nDiscount_fixed”=>“0”,“tNotes”=>“4WD旅游套餐/Rezdy,已应用” 折扣“、”天价“=>”京东“、”CreatedOn“=>”2017-01-21 15:08:00”, “ModifiedOn”=>“2017-01-21 15:10:00”,“tTicketNumber”=>“Rezdy”, “\u kfnOrganisationID'=>“0”),“schedule'=>对象(集合), 'j_decode'=>对象(stdClass),'update_id_data'=>对象(stdClass), BookingsController.php第325行中的“totalincrement”=>“3”)

有趣的是,当我将它上传到主机时,它正在linux服务器上工作。我在拔头发,我以为它不起作用了。我在localhost上安装了PHP版本7.0.13,在服务器上安装了PHP版本5.6.30。很难理解这一行如何导致数组到字符串的转换错误。你能帮我弄清楚这一点吗?我不愿意在localhost上降级我的php版本,因为我有php5不支持的其他代码。提前谢谢

更新:

控制器中的整个代码:

$rules = $this->validateForm();
$validator = Validator::make($request->all(), $rules);  
if ($validator->passes()) {
$data = $this->validatePost( $request );

$schedule = DB::table('schedule')
        ->where('id','=',$data['_kfnTourID'])
        ->get();

        if(isset($_SESSION['bookingiddata']))
        {
            print_r  ($j_decode= json_decode($schedule[0]->data));
            $update_id_data = json_decode($_SESSION['bookingiddata']);

            $totalincrement = $update_id_data->nAdults+$update_id_data->nChildren+$update_id_data->nInfants+$update_id_data->nFOC;
            //$j_decode->$data['_kfdTourDate']->available = ($j_decode->$data['_kfdTourDate']->available+$totalincrement);
            $j_decode->$data['_kfdTourDate']['available'] = ($j_decode->$data['_kfdTourDate']['available']+$totalincrement);
            ($j_decode->$data)['_kfdTourDate']->status = "available";
同样
print\r$j\u encode=json\u encode($j\u decode)向我打印以下内容

{“2017-02-13:{“可用”:1,“绑定”:0,“信息”:“备注”:“价格”:0,“促销”:0,“状态”:“可用”},“2017-02-14:{“可用”:1,“绑定”:0,“信息”:“备注”:“价格”:0,“促销”:0,“状态”:“可用”},“2017-02-08:{“可用”:0,“绑定”:0,“信息”:“备注”:“价格”:0,“促销”:0,“状态”:“预订”},“2017-02-12:{“可用”:0,“绑定”:0,“信息”:,“备注”:“价格”:0,“促销”:0,“状态”:“预订”,2017-02-10:{“可用”:0,“绑定”:0,“信息”:“备注”:“价格”:0,“促销”:0,“状态”:“预订”,2017-02-15:{“可用”:0,“绑定”:0,“信息”:“备注”:“价格”:0,“促销”:0,“状态”:“预订”;“2017-02-16:{“可用”:0,“绑定”:0,“信息”:“备注”:“价格”:0,“促销”:0,“状态”:“预订”


PHP7中的操作顺序发生了一些变化(请参阅)。我怀疑您可能需要在可用的
$j_decode->$data['''u kfdTourDate']->中使用一些括号,以使其按照您想要的顺序进行计算。

如前所述

在php 5.6.3中,允许使用以下表达式:

echo $json_decode->$data['_kfdTourDate']->available;
因此,您正在尝试访问
$data[''u kfdTourDate']
的值,它是
$json\u decode
对象中的元素

例如:


在PHP7中

现在可以间接访问变量、属性和方法 严格按照从左到右的顺序评估,而不是以前的顺序 特殊情况的组合。下表显示了 评价发生了变化

因此,解释器将按如下方式解释此代码:

echo $json_decode->$data['_kfdTourDate']->available;
// first , give me the value $json_decode->$data,
// then choose the _kfdTourDate key
要解决这个问题,您需要:

echo $json_decode->{$data['_kfdTourDate']}->available;

告诉php,
$data[''u kfdTourDate']
只是一个值;

是$j\u decode->$data[''u kfdTourDate']->可用的数组?如果没有实际的数组结构,很难维护;似乎您正在从
\u kfdTourDate
访问未知变量,这将返回一个字符串
2017-03-16
。可能您的linux服务器没有错误的原因是因为错误报告被禁用。Woaww@Semi-Friends谢谢!这就是原因具体发生了什么。谢谢你的接班人。我会玩它,并让你知道结果。@hassan,更新了我的帖子。你能检查一下吗?它可能会让你对我的问题有更多的了解。谢谢你的链接。它非常有用。我会尝试更改括号,并让你知道结果。更新了我的帖子。你能帮我修改一下吗对呀?这可能会让你对我的问题有更多的了解,我用括号玩的时候没用。难以置信!太简单了。谢谢你的详细解释。我相信很多像我这样的人都会从这篇文章中受益。