【问题标题】:Generate grouped comma seperated list from multidimensional array php从多维数组php生成分组的逗号分隔列表
【发布时间】:2014-08-23 03:41:43
【问题描述】:

我正在尝试对 MySQL 进行批量插入,因此我需要以这种格式结束值:

(1,2,2),(1,2,8),(1,2,0)

目前可以生成多维数组:

Array
(
    [0] => Array
        (
            [key1] => 1
            [key2] => 2
            [key3] => 2
        )

    [1] => Array
        (
            [key1] => 1
            [key2] => 2
            [key3] => 8
        )

    [2] => Array
        (
            [key1] => 1
            [key2] => 2
            [key3] => 0
        )

)

将数组转换为我需要的“分组逗号分隔列表”的最有效方法是什么?

【问题讨论】:

    标签: php mysql arrays multidimensional-array


    【解决方案1】:

    可能是这样的,假设您不需要担心转义数据中的逗号和括号。

    foreach ($arrays as &$array) {
        $array = '('.implode(',', $array).')';
    }
    
    $csv = implode(',', $arrays);
    

    【讨论】:

    • 您好。这是我所希望的那种心灵弯曲魔法。效果很好!
    【解决方案2】:

    尝试将数组连接成一个字符串以进行插入。

    foreach($array as $a){
        $output .= '('.$a['key1'].','.$a['key2'].','.$a['key3'].'),';
    }
    
    $output = substr($output, 0, -1); // remove the last comma
    

    【讨论】:

    • 感谢您的回答...这将如何处理分隔组的逗号???
    • 啊,只是在组之间添加了逗号并使用 substr 删除了尾随的逗号
    • 感谢您解决这个问题!它运作良好,但我希望避免描述单个键。其他可行的解决方案的积分!
    【解决方案3】:

    为什么不用php的implode函数呢?

    在这种情况下,我会做两个循环:

        $gather=array(); //here we will keep all single arrays
        $multi=array(array('1','2','3'),array('4','5','6'));
    
        foreach($multi as $single)
        {
        $gather[]="(".implode($single,',').")";
        }
    
        print_r(implode(",",$gather)); //(1,2,3),(4,5,6)
    

    【讨论】:

      猜你喜欢
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-23
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      • 2016-07-29
      相关资源
      最近更新 更多