php - PDO - 具有数组方面的 Foreach

标签 php mysql arrays foreach pdo

使用 PDO,我收到 1+ 行并将它们转换为如下数组:

while($row = $car_sales->fetch(PDO::FETCH_ASSOC)){          
    $car_id_array[] = $row["car_id"];
    $car_type_array[] = $row["car_type"];
    $dealer_id_array[] = $row["dealer_id"];
    $buyer_id_array[] = $row["seller_id"];
}

我试图简单地“混合”数组的每个级别作为一个单元,并一起进入 foreach 循环,按顺序提交 $q 查询。换句话说,像这样:

foreach($dealer_id_array as $dealer_id) {
    if ($car_type=='new') {
        if ($dealer_id==$buyer_id){
          $q = 'UPDATE car_sales SET new_cars=new_cars+1 WHERE dealer_id=:dealer_id';
        } else if ($dealer_id!=$buyer_id){
          $q = 'UPDATE car_sales SET new_cars=new_cars-1 WHERE dealer_id=:dealer_id';
    } else if ($car_type=='old') {
        if ($dealer_id==$buyer_id){
          $q = 'UPDATE car_sales SET old_cars=old_cars+1 WHERE dealer_id=:dealer_id';
        } else if ($dealer_id!=$buyer_id){
          $q = 'UPDATE car_sales SET old_cars=old_cars-1 WHERE dealer_id=:dealer_id';
    }
    $car_update = $dbhandle->prepare($q);
    $car_update->execute(array(':dealer_id' => $dealer_id));
}

如果 while 循环中仅检索到一个值,则循环应使用第一个数组值运行。如果有更多,则 foreach 应该运行与 while 循环中的 Dealer_id 一样多的次数,同时遵守顺序。这个例子行不通,但我正在寻找可能的解决方案来正确解决这个问题。您认为最有效的方法是什么?

最佳答案

我可能会误解你,但我相信如果你只是用 for 循环替换 foreach 循环,并计算其中一个数组,你就会解决你的问题:

 for($i = 0; $i < count($dealer_id_array); $i++) {

然后简单地使用 $i 来访问数组中的正确项目:

$car_type_array[$i];

但是话虽如此,我一开始并没有真正看到最初的四个数组的意义。难道你不能直接在 while 循环中直接执行 foreach 循环中的代码吗?

已编辑:修复代码示例

关于php - PDO - 具有数组方面的 Foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12409295/

相关文章:

mysql - 在分层 Mysql 查询方面需要帮助

javascript - 选择下拉列表时生成更多 MYSQL 数据库结果

php - array_walk() 是做什么的?

在C中创建字符串连接函数

MySQL:将元素添加到结果数组

java - 尝试使用数组实现递归时出错

php - 如何根据同一 SELECT 中的不同 ID 从表中获取两个值

php - 在 PHP 中将数据库结果回显为 html 代码的最佳方法是什么?

php - Mysql-选择上传2个月以上的数据

php - 如何将时间存储为天跨度..作为整数?