消息:在 float 上调用成员函数 result_array()
Message: Call to a member function result_array() on float
我想将 $distance 变量的结果显示到视图文件中的 table。
但是我的脚本出错了,谁能帮忙解决这个错误?
我还想从最小的开始对 $ distance 变量的结果进行排序。
第38行出现错误,在我的视图文件中的foreach函数中。
这是来自我的控制器文件的脚本:
function index()
{
$center_lat = -7.2574719;
$center_lng = 112.7520883;
$data= $this->m_metode->tampil_data_fotografer();
{
foreach($data->result_array() as $row)
{
$lat=(float)$row['latitude'];
$lng=(float)$row['longitude'];
// $distance= $lat * $center_lat;
$distance['tb_fotografer'] =( 6371 * acos((cos(deg2rad($center_lat)) ) * (cos(deg2rad($lat))) *
(cos(deg2rad($lng) - deg2rad($center_lng)) )+ ((sin(deg2rad($center_lat))) *
(sin(deg2rad($lat))))));
// var_dump($distance);
}
}
$this->load->view('public/pencari/v_tampil_rekomendasi',$distance);
}
我的视图:
<?php
$no = 1;
foreach($tb_fotografer->result_array() as $fg){
?>
<tr>
<td><?php echo $no++ ?></td>
<td><?php echo $fg->nama ?></td>
<td><?php echo $fg->alamat ?></td>
<td><?php echo $fg->kamera ?></td>
<td><?php echo $fg->spesifikasi_foto ?></td>
<td><?php echo $fg->keahlian_foto ?></td>
<td><?php echo $fg->latitude ?></td>
<td><?php echo $fg->longitude ?></td>
</tr>
<?php } ?>
这个变量“$tb_fotografer”存储一个浮点值而不是一个数组,你不能用result_array()访问。您必须像这样存储为数组:
$distance['tb_fotografer'][] = ( 6371 * acos((cos(deg2rad($center_lat)) ) * (cos(deg2rad($lat))) *
(cos(deg2rad($lng) - deg2rad($center_lng)) )+ ((sin(deg2rad($center_lat))) *
(sin(deg2rad($lat))))));
根据您的视图字段,您需要将 $data 发送到您的视图文件。
$this->load->view('public/pencari/v_tampil_rekomendasi',['tb_fotografer' => $data->result_array()]);
在您的视图文件中:
foreach($tb_fotografer as $fg){
对于排序,您可以将数据存储在另一个变量中,例如 $output 并在其上放置距离,之后您可以使用此方法进行排序:usort($array, "cmp");
在完成所有步骤后,您可以发送到您的视图。
最终代码:
function index()
{
$center_lat = -7.2574719;
$center_lng = 112.7520883;
$data= $this->m_metode->tampil_data_fotografer();
$out = []
{
foreach($data->result_array() as $row)
{
$lat=(float)$row['latitude'];
$lng=(float)$row['longitude'];
// $distance= $lat * $center_lat;
$distance =( 6371 * acos((cos(deg2rad($center_lat)) ) * (cos(deg2rad($lat))) *
(cos(deg2rad($lng) - deg2rad($center_lng)) )+ ((sin(deg2rad($center_lat))) *
(sin(deg2rad($lat))))));
$out[] = array_merge($row, ['distance' => $distance]);
}
}
// @todo use usort for sort base on distance
$this->load->view('public/pencari/v_tampil_rekomendasi',['tb_fotografer' => $out]);
}
您已经在每次迭代中覆盖了 $distance['tb_fotografer']
变量,并且您已经访问了数组数据上的对象。
尝试像这样修改控制器:
function index()
{
$center_lat = -7.2574719;
$center_lng = 112.7520883;
$data= $this->m_metode->tampil_data_fotografer();
{
foreach($data->result_array() as $key => $row)
{
$lat=(float)$row['latitude'];
$lng=(float)$row['longitude'];
// $distance= $lat * $center_lat;
$distance['tb_fotografer'][$key][] = $row; // get all of the preserved result_array data
$distance['tb_fotografer'][$key][]['distance'] = ( 6371 * acos((cos(deg2rad($center_lat)) ) * (cos(deg2rad($lat))) *
(cos(deg2rad($lng) - deg2rad($center_lng)) )+ ((sin(deg2rad($center_lat))) *
(sin(deg2rad($lat))))));
// var_dump($distance);
}
}
$this->load->view('public/pencari/v_tampil_rekomendasi',$distance);
}
v_tampil_rekomendasi
视图是这样的:
<?php
$no = 1;
foreach($tb_fotografer as $fg){
?>
<tr>
<td><?php echo $no++ ?></td>
<td><?php echo $fg['nama'] ?></td>
<td><?php echo $fg['alamat'] ?></td>
<td><?php echo $fg['kamera'] ?></td>
<td><?php echo $fg['spesifikasi_foto'] ?></td>
<td><?php echo $fg['keahlian_foto'] ?></td>
<td><?php echo $fg['latitude'] ?></td>
<td><?php echo $fg['longitude'] ?></td>
<td><?php echo $fg['distance'] ?></td>
</tr>
<?php } ?>
我想将 $distance 变量的结果显示到视图文件中的 table。 但是我的脚本出错了,谁能帮忙解决这个错误? 我还想从最小的开始对 $ distance 变量的结果进行排序。 第38行出现错误,在我的视图文件中的foreach函数中。
这是来自我的控制器文件的脚本:
function index()
{
$center_lat = -7.2574719;
$center_lng = 112.7520883;
$data= $this->m_metode->tampil_data_fotografer();
{
foreach($data->result_array() as $row)
{
$lat=(float)$row['latitude'];
$lng=(float)$row['longitude'];
// $distance= $lat * $center_lat;
$distance['tb_fotografer'] =( 6371 * acos((cos(deg2rad($center_lat)) ) * (cos(deg2rad($lat))) *
(cos(deg2rad($lng) - deg2rad($center_lng)) )+ ((sin(deg2rad($center_lat))) *
(sin(deg2rad($lat))))));
// var_dump($distance);
}
}
$this->load->view('public/pencari/v_tampil_rekomendasi',$distance);
}
我的视图:
<?php
$no = 1;
foreach($tb_fotografer->result_array() as $fg){
?>
<tr>
<td><?php echo $no++ ?></td>
<td><?php echo $fg->nama ?></td>
<td><?php echo $fg->alamat ?></td>
<td><?php echo $fg->kamera ?></td>
<td><?php echo $fg->spesifikasi_foto ?></td>
<td><?php echo $fg->keahlian_foto ?></td>
<td><?php echo $fg->latitude ?></td>
<td><?php echo $fg->longitude ?></td>
</tr>
<?php } ?>
这个变量“$tb_fotografer”存储一个浮点值而不是一个数组,你不能用result_array()访问。您必须像这样存储为数组:
$distance['tb_fotografer'][] = ( 6371 * acos((cos(deg2rad($center_lat)) ) * (cos(deg2rad($lat))) *
(cos(deg2rad($lng) - deg2rad($center_lng)) )+ ((sin(deg2rad($center_lat))) *
(sin(deg2rad($lat))))));
根据您的视图字段,您需要将 $data 发送到您的视图文件。
$this->load->view('public/pencari/v_tampil_rekomendasi',['tb_fotografer' => $data->result_array()]);
在您的视图文件中:
foreach($tb_fotografer as $fg){
对于排序,您可以将数据存储在另一个变量中,例如 $output 并在其上放置距离,之后您可以使用此方法进行排序:usort($array, "cmp"); 在完成所有步骤后,您可以发送到您的视图。
最终代码:
function index()
{
$center_lat = -7.2574719;
$center_lng = 112.7520883;
$data= $this->m_metode->tampil_data_fotografer();
$out = []
{
foreach($data->result_array() as $row)
{
$lat=(float)$row['latitude'];
$lng=(float)$row['longitude'];
// $distance= $lat * $center_lat;
$distance =( 6371 * acos((cos(deg2rad($center_lat)) ) * (cos(deg2rad($lat))) *
(cos(deg2rad($lng) - deg2rad($center_lng)) )+ ((sin(deg2rad($center_lat))) *
(sin(deg2rad($lat))))));
$out[] = array_merge($row, ['distance' => $distance]);
}
}
// @todo use usort for sort base on distance
$this->load->view('public/pencari/v_tampil_rekomendasi',['tb_fotografer' => $out]);
}
您已经在每次迭代中覆盖了 $distance['tb_fotografer']
变量,并且您已经访问了数组数据上的对象。
尝试像这样修改控制器:
function index()
{
$center_lat = -7.2574719;
$center_lng = 112.7520883;
$data= $this->m_metode->tampil_data_fotografer();
{
foreach($data->result_array() as $key => $row)
{
$lat=(float)$row['latitude'];
$lng=(float)$row['longitude'];
// $distance= $lat * $center_lat;
$distance['tb_fotografer'][$key][] = $row; // get all of the preserved result_array data
$distance['tb_fotografer'][$key][]['distance'] = ( 6371 * acos((cos(deg2rad($center_lat)) ) * (cos(deg2rad($lat))) *
(cos(deg2rad($lng) - deg2rad($center_lng)) )+ ((sin(deg2rad($center_lat))) *
(sin(deg2rad($lat))))));
// var_dump($distance);
}
}
$this->load->view('public/pencari/v_tampil_rekomendasi',$distance);
}
v_tampil_rekomendasi
视图是这样的:
<?php
$no = 1;
foreach($tb_fotografer as $fg){
?>
<tr>
<td><?php echo $no++ ?></td>
<td><?php echo $fg['nama'] ?></td>
<td><?php echo $fg['alamat'] ?></td>
<td><?php echo $fg['kamera'] ?></td>
<td><?php echo $fg['spesifikasi_foto'] ?></td>
<td><?php echo $fg['keahlian_foto'] ?></td>
<td><?php echo $fg['latitude'] ?></td>
<td><?php echo $fg['longitude'] ?></td>
<td><?php echo $fg['distance'] ?></td>
</tr>
<?php } ?>