类似上面的表单,还没加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())
回复讨论(解决方案)
不就一个行列交换么?
class squareArray{ 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; }...
本来你的输入网页就应该设计成一行(一个td)用一组变量名,那不就简单了
foreach($_POST as $name=>$item) { 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($_POST as $name=>$item) { if(is_array($item)) { foreach($item as $key=>$value) { $res[$kek][$name] = $value; } }}$res 就是你要的结果
版主你好,加了js以后可能会出现用户点击增加一行后什么也不填写就提交,这样会写一条空记录,怎么判断抛弃空记录的数组
先完成行列转换,然后删去全空的项目
foreach($res as $i=>$item) { if(trim(join('', $item)) == '') unset($res[$i]);}
这种提交没有必要搞这么复杂
只要你确定1点就可以简单化,就是哪一项是必填项,也就是说不能为空的
这里我假设品名不能为空,那么程序之需要这样就可以
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]; //这里加插入数据库语句 }}
foreach($_POST as $name=>$item) { if(is_array($item)) { foreach($item as $key=>$value) { $res[$kek][$name] = $value; } }}$res 就是你要的结果
版主你好,加了js以后可能会出现用户点击增加一行后什么也不填写就提交,这样会写一条空记录,怎么判断抛弃空记录的数组
没有必要要做组合的,你目的不外乎就是逐条插入数据库,我在7#的代码就可以满足了
foreach($_POST as $name=>$item) { if(is_array($item)) { foreach($item as $key=>$value) { $res[$kek][$name] = $value; } }}$res 就是你要的结果
版主你好,加了js以后可能会出现用户点击增加一行后什么也不填写就提交,这样会写一条空记录,怎么判断抛弃空记录的数组
没有必要要做组合的,你目的不外乎就是逐条插入数据库,我在7#的代码就可以满足了
我用的是Thinkphp的关联模型 HAS_MANY 一次性就能提交过去 所以我要传一个这样的数组进去!
foreach($_POST as $name=>$item) { if(is_array($item)) { foreach($item as $key=>$value) { $res[$kek][$name] = $value; } }}$res 就是你要的结果
版主你好,加了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; }}
哎,要懂得变通,而不是死思维

本文讨论了PHP数据对象(PDO),这是PHP中数据库访问的扩展名。它通过准备好的语句及其对MySQLI的好处,包括数据库抽象和更好的错误处理,强调了PDO在增强安全性方面的作用。

memcache和memcached是通过减少数据库负载加快Web应用程序的PHP缓存系统。可以在仔细的密钥管理的项目之间共享一个实例。

本文讨论了JavaScript和PHP如何通过HTTP请求间接相互作用,因为它们的环境不同。它涵盖了将数据从JavaScript发送到PHP的方法

文章讨论了PHP从1995年的“个人主页工具”到1998年的“ PHP:超文本预处理器”的演变,这反映了其超越个人网站的扩展使用。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

SublimeText3汉化版
中文版,非常好用

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中