首页 > 解决方案 > 如果子数组不同,如何使用php在表mysql中插入数组2d

问题描述

如果数量子数组不同,我会问如何插入数组,如果 $arrays != 3 我有问题,因为在数组 1 中的子数组 2

<?php
$arrays=array(
        array('a','b'),
        array('a','b','c'),
        array('a','b','c')
    );
$per=0;
for ($h=0; $h < count($arrays); $h++) { 
    if (count($arrays) > $per) {
        $per= count($arrays);
     }
}

$koneksi = new mysqli("127.0.0.1","root","","data");

$nil=array();
foreach ($arrays as $data) {
    foreach ($data as $key => $value) {
        $data[$key] = $data[$key];  
    }
     $nil[]="('".implode("', '",$data). "')";
 }

$insert="INSERT INTO datams (data1,data2,data3) VALUES ".implode(', ',$nil);

 $queri=mysqli_query($koneksi, $insert);

 if ($queri == true){
    echo 'upload done'.PHP_EOL;
  } else {
     echo 'fail upload'.PHP_EOL;
  }

如果子数组相同,我无法插入数据,可以帮助我吗?

标签: phpmysqlarrays

解决方案


您必须使数组的长度相同。

创建一个空数组,然后循环现有数组,使用 . 添加缺失值array_replace。之后,您可以插入它们。

$empty=['' , '' , ''];

foreach($array as $key => $tmp){
   $array[$key] = array_replace($empty,$tmp); 
   // This replaces the values of $empty with those of $array that are set:
   // ['','',''] replace wihh ['a','b','c'] gives ['a','b','c']
   // ['','',''] replace with ['a','b']     gives ['a','b','']
   }

你最终会得到:

$arrays=array(
        array('a','b','' ),
        array('a','b','c'),
        array('a','b','c')
    );

现在您可以插入值;

编辑

为了使其更灵活(即原始数组不断变化),您首先必须找到$array.

$max=0; 
foreach($array as $a) {
    $c = count($a);
    if( $c > $max) $max = $c; 
    }
$empty=array_fill(0,$max,'');

推荐阅读