我在laravel中的函数中传递了一个对象。 我试图将属性的值分配给变量。弹出错误。
当我试图弄清楚发生了什么时,我尝试dd()它起作用的值。
但是当我尝试回显相同的内容时,它不会。
我在想什么。
使用此功能时,
location1和location2是location类的两个对象。
函数在这里:
function geodistance($location1,$location2){
dd($location1->lat);
$lat1=$location1->lat;
}
它打印
“ 28.612072”
但是当我将相同的功能更改为
function geodistance($location1,$location2){
echo($location1->lat);
$lat1=$location1->lat;
}
输出错误为:
试图获取非对象的属性“ lat”
甚至功能
function geodistance($location1,$location2){
echo $location1->lat;
$lat1=$location1->lat;
}
给出相同的输出
提醒您的目的是像这样将值分配给变量。
function geodistance($location1,$location2){
$lat1=$location1->lat;
}
当我从函数geodistance()内回显$ location1时,发出并给出了有意义的错误。
function geodistance($location1,$location2){
echo $location1;
$lat1=$location1->lat;
App \ MyClasses \ city类的对象无法转换为字符串
当我dd(像这样,从函数中获取$ location1时,它会给出正确的结果。
function geodistance($location1,$location2){
dd($location1);
$lat1=$location1->lat;
像这样:
城市{#13410▼ +编号:2245 + info:“ {}”
+名称:“新德里”
+ lat:“ 28.612072”
+ lon:“ 77.22978”
+时区:空
+加权评分:空 + country_id:1 }
看来我错过了一些非常琐碎的东西。 :(
答案 0 :(得分:0)
@salman zafar和@apokryfos指出,错误是我正在传递数组。
当我做dd时,在处理完第一个数据后,程序终止了。
传递的数组不完全正确。我数组中的最后一个数据点不是同一类的对象。
因此,使用echo时数据最终被破坏。 Echo会依次打印一个数据,但最终它将得到错误的输入。
捕获这些错误的最佳方法(经过大量的实验)是在每个迭代中将变量的值写入文本文件中。 这样做是因为它可以捕获文本文件中的错误,并且您可以知道程序停止了多少次迭代。
希望这有助于其他人避免犯下如此明显的明显错误(这是此类错误中的第一个),这对我来说至少是>