如果子数组不同,如何使用 PHP 在表 MySQL 中插入数组 2D



如果数量子数组不同,我会问如何插入数组,如果$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,'');

相关内容

  • 没有找到相关文章