php - 如果子数组不同,如何使用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;
}
如果子数组相同,我无法插入数据,可以帮助我吗?
解决方案
您必须使数组的长度相同。
创建一个空数组,然后循环现有数组,使用 . 添加缺失值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,'');
推荐阅读
- c# - 生产者端的队列
- php - 如何根据 id 获取类别名称?
- c# - UseSpaPrerendering 从 .net core 3.0 开始被弃用,有什么替代方案?
- reactjs - 为什么我会收到来自 React 的此错误消息
- r - ggplot:绘制带有双 y 标签、彩色单元格和条件的网格
- ios - 如何使用 Swift 创建打开和关闭通用代码库的多个按钮
- regex - 忽略正则表达式中的一个字符的最大长度
- python - 如何在ubuntu中提供将数据框导出到excel文件的路径?
- python - Python:使用 URL 将文件上传到 Google Cloud Storage
- java - 有人可以解释一下这段代码吗?关于用户输入、扫描仪等