类似上面的表单,还没加js,不一定多少行,我要做的是每行一条数据写入数据库。这个数组我就不会组合了
我表单里是如下设置的:
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
品名:<input name="pinming[]" type="text" value="">
型号:<input name="xinghao[]" type="text" value="">
规格:<input name="guige[]" type="text" value="">
数量:<input name="shuliang[]" type="text" value="">
单价:<input name="danjia[]" type="text" value="">
总价:<input name="zongjia[]" type="text" value="">
</td>
</tr>
<tr>
<td>
品名:<input name="pinming[]" type="text" value="">
型号:<input name="xinghao[]" type="text" value="">
规格:<input name="guige[]" type="text" value="">
数量:<input name="shuliang[]" type="text" value="">
单价:<input name="danjia[]" type="text" value="">
总价:<input name="zongjia[]" type="text" value="">
</td>
</tr>
</table>
获取到的数组是这样的array
'pinming' =>
array
0 => string '123' (length=3)
1 => string '123' (length=3)
'xinghao' =>
array
0 => string '123' (length=3)
1 => string '123' (length=3)
'guige' =>
array
0 => string '123' (length=3)
1 => string '123' (length=3)
'shuliang' =>
array
0 => string '123' (length=3)
1 => string '123' (length=3)
'danjia' =>
array
0 => string '123' (length=3)
1 => string '123' (length=3)
'zongjia' =>
array
0 => string '12312' (length=5)
1 => string '123' (length=3)
我怎么将上面的数组变成下面的样子
array(
//第一条
array(
'pinming' => 'xxx'
'guige' => 'xxx'
//....其他字段
)
//第二条
array(
'pingming' => 'xxx'
'guige' => 'xxx'
//其他字段
)
//第N条
array()
)
我表单里是如下设置的:
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
品名:<input name="pinming[]" type="text" value="">
型号:<input name="xinghao[]" type="text" value="">
规格:<input name="guige[]" type="text" value="">
数量:<input name="shuliang[]" type="text" value="">
单价:<input name="danjia[]" type="text" value="">
总价:<input name="zongjia[]" type="text" value="">
</td>
</tr>
<tr>
<td>
品名:<input name="pinming[]" type="text" value="">
型号:<input name="xinghao[]" type="text" value="">
规格:<input name="guige[]" type="text" value="">
数量:<input name="shuliang[]" type="text" value="">
单价:<input name="danjia[]" type="text" value="">
总价:<input name="zongjia[]" type="text" value="">
</td>
</tr>
</table>
获取到的数组是这样的array
'pinming' =>
array
0 => string '123' (length=3)
1 => string '123' (length=3)
'xinghao' =>
array
0 => string '123' (length=3)
1 => string '123' (length=3)
'guige' =>
array
0 => string '123' (length=3)
1 => string '123' (length=3)
'shuliang' =>
array
0 => string '123' (length=3)
1 => string '123' (length=3)
'danjia' =>
array
0 => string '123' (length=3)
1 => string '123' (length=3)
'zongjia' =>
array
0 => string '12312' (length=5)
1 => string '123' (length=3)
我怎么将上面的数组变成下面的样子
array(
//第一条
array(
'pinming' => 'xxx'
'guige' => 'xxx'
//....其他字段
)
//第二条
array(
'pingming' => 'xxx'
'guige' => 'xxx'
//其他字段
)
//第N条
array()
)
{
public function swapRowCol($inArr)
{
$mit = new MultipleIterator(MultipleIterator::MIT_KEYS_ASSOC);
foreach($inArr as $key => $value) { $temArr = new ArrayIterator($value); $mit->attachIterator($temArr, $key); }
$arr = array();
foreach($mit as $item) array_push($arr,$item);
if (isset($inArr[0])) $arr = array_combine(array_keys($inArr[0]),$arr);
return $arr;
} public function swapRowColWithKey($inArr)
{
foreach($inArr as $k1=>$v1) foreach($v1 as $k2=>$v2) $arr[$k2][$k1] = $v2;
return $arr;
}
...
if(is_array($item)) {
foreach($item as $key=>$value) {
$res[$kek][$name] = $value;
}
}
}
$res 就是你要的结果
$fields=array('pinming','guige','xinghao','shuliang','danjia','zongjia');
$data=array();
foreach($_POST['pinming'] as $key=>$vo){
foreach($fields as $item){
$data[$key][$item]=$_POST[$key][$item];
}
}
//$data is the result
foreach($res as $i=>$item) {
if(trim(join('', $item)) == '') unset($res[$i]);
}
foreach($pinming as $key=>$val) {
$uparr=array();
if(trim($val)!='') {
$uparr['pinming']=$val;
$uparr['xinghao']=$pinming[$key];
$uparr['guige']=$guige[$key];
$uparr['shuliang']=$shuliang[$key];
$uparr['danjia']=$danjia[$key];
$uparr['zongjia']=$zongjia[$key];
//这里加插入数据库语句
}
}
版主你好,加了js以后可能会出现用户点击增加一行后什么也不填写就提交,这样会写一条空记录,怎么判断抛弃空记录的数组
没有必要要做组合的,你目的不外乎就是逐条插入数据库,我在7#的代码就可以满足了我用的是Thinkphp的关联模型 HAS_MANY 一次性就能提交过去 所以我要传一个这样的数组进去!
版主你好,加了js以后可能会出现用户点击增加一行后什么也不填写就提交,这样会写一条空记录,怎么判断抛弃空记录的数组
没有必要要做组合的,你目的不外乎就是逐条插入数据库,我在7#的代码就可以满足了我用的是Thinkphp的关联模型 HAS_MANY 一次性就能提交过去 所以我要传一个这样的数组进去!
那我用我的方法一样可以组合,插入数据库的地方变成组合新数组形式就可以
$newarr=array();
foreach($pinming as $key=>$val) {
$uparr=array();
if(trim($val)!='') {
$uparr['pinming']=$val;
$uparr['xinghao']=$pinming[$key];
$uparr['guige']=$guige[$key];
$uparr['shuliang']=$shuliang[$key];
$uparr['danjia']=$danjia[$key];
$uparr['zongjia']=$zongjia[$key];
$newarr[]=$uparr;
}
}哎,要懂得变通,而不是死思维