php - 如果子数组不同,如何使用php在表mysql中插入数组2d

标签 php mysql arrays

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

<?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;
  }

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

最佳答案

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

创建一个空数组,然后循环现有数组,使用 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,'');

关于php - 如果子数组不同,如何使用php在表mysql中插入数组2d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52574904/

相关文章:

java - Android – 安全地向服务器发送/从服务器接收数据

php - 插入后获取id并将其作为值保存到另一个表中

mysql - 显示统计某一列数据并汇总总金额的记录

arrays - 初始化空 slice 的正确方法

c++ - 是否可以使用 new 运算符在 C++ 11 中初始化数组

php - 用于创建组和邀请用户的正确表结构

PHP 表单未将图像提交到 MySQL 表中

php - Laravel 身份验证始终为访客

Mysql:按两列排序,使用文件排序

php - Codeigniter-如何将不同大小的数组插入数据库