【问题标题】:Foreach with custom index PHP带有自定义索引 PHP 的 Foreach
【发布时间】:2018-07-03 05:44:22
【问题描述】:

嗨 :) 我在 PHP 中有这个数组。

Array ( [99] => 5 [2] => 5 [45] => 4 [4] => 3 [84] => 1 [6] => 3 )

我想循环这个数组以便构建一个 SQL 查询。

查询应如下所示:

INSERT INTO table (index, value) VALUES (99, 5), (2, 5), (45, 4), (4, 3), (84, 1), (6, 3);

我正在寻找一个 PHP forforeach cicle,以便在我的查询中不仅包含元素的值,还包含原始索引(那不是 0, 1, 2..)。

谢谢! 祝你今天过得愉快! :)

解决方案

foreach ($obt as $key => $value) {
     echo "$key -> $value <br>";
}   

【问题讨论】:

    标签: php mysql arrays for-loop foreach


    【解决方案1】:

    您正在寻找的内容类似于:

    foreach ($array as $key => $value) {
        echo"Key: {$key}";
        echo"Val: {$value}";
    

    希望它有所帮助。

    【讨论】:

    • 不,这不会完全有帮助。这是一个帮助,但不是完整的解决方案
    • 谢谢大家!这是最简单,最快的方法!再次感谢!
    • @AlivetoDie 为什么不呢?因为我还没有提供他如何从中获得想要的查询?我假设他知道一些 PHP 并且应该能够自己做到这一点,而且看起来,他做到了。他还要求 foreach 循环具有键和值。他没有直接要求给他一个完整的解决方案来创建查询。
    【解决方案2】:

    由于您要求 foreach

    $arr = [99 => 5, 2 => 4];
    
    $valuePairs = [];
    
    foreach ($arr as $index => $value) {
        $valuePairs[] = sprintf('(%u, %u)', $index, $value);
    }
    
    $values = implode(', ', $valuePairs);
    
    $sql = "INSERT INTO table (index, value) VALUES $values;";
    
    echo $sql;
    

    这会得到你想要的结果:

    INSERT INTO table (index, value) VALUES (99, 5), (2, 4);
    

    我假设您的数组中总是有数字。在使用 this 之前,您可能还需要检查输入数组是否为空。

    【讨论】:

      【解决方案3】:

      可以使用php数组函数:

      $ins = implode(', ', array_map(function ($k, $v) {
              return "({$k},{$v})";
          }, array_keys($arr), array_values($arr)));
      
      $sql = "INSERT INTO table (index, value) VALUES {$ins};"
      

      【讨论】:

        【解决方案4】:

        一种方法是foreach() 循环使用implode()

        foreach ($array as $key => $value) {
            $values[] = '(' . $key . ', ' . $value . ')';
        }
        $values = implode(', ', $values) . ';';
        
        $sql = "INSERT INTO table (index, value) VALUES $values";
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-14
          • 1970-01-01
          • 1970-01-01
          • 2012-07-06
          • 2012-05-07
          • 2021-11-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多