为了账号安全,请及时绑定邮箱和手机立即绑定

如何在循环中中断索引数组并在php中使用

如何在循环中中断索引数组并在php中使用

PHP
达令说 2023-07-21 18:17:31
我在索引数组中有两个值(bookingId),现在我想使用这些值更新查询,但现在无法在循环中中断数组,我想运行更新查询(根据数组中的计数值)这是我的代码,我错在哪里?$bookingIds; // contaning two values 176,190$counts = count($bookingIds);  // counting array valuesfor ($x = 1; $x <= $counts; $x++)     {        $data = array('approved' => "1");        $this->db->where('bookingId', $bookingIds);        $this->db->update('notifications', $data);    }
查看完整描述

3 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

我认为你应该在循环时提及数组的索引。并且你$x必须从0


$bookingIds; // contaning two values 176,190

$counts = count($bookingIds);  // counting array values

for ($x = 0; $x < $counts; $x++) 

    {

        $data = array('approved' => "1");

        $this->db->where('bookingId', $bookingIds[$x]);

        $this->db->update('notifications', $data);

    }


查看完整回答
反对 回复 2023-07-21
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

使用 foreach 来重构上述内容以消除整个索引问题将是


$data = array('approved' => "1");

foreach ($bookingsIds as $bookingId )

{

    $this->db->where('bookingId', $bookingId);

    $this->db->update('notifications', $data);

}


查看完整回答
反对 回复 2023-07-21
?
慕神8447489

TA贡献1780条经验 获得超1个赞

看起来你正在使用一个框架;如果它提供了一个whereIn()方法,使用它会更有效(运行更少的 SQL 查询):

$data = ['approved' => '1'];$this->db
    ->whereIn('bookingId', $bookingIds)
    ->update('notifications', $data);


(请注意,您不能将数千个值放入这样的“where in”子句中,因为查询会很大。就我个人而言,我会分块处理此类内容,例如每个查询 500 条记录。)

(另外,如果“where in”数组(此处为 )为空,请确保不会发生错误$bookingIds。这是一种特殊情况,框架必须正确处理。)


查看完整回答
反对 回复 2023-07-21
  • 3 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信