php – 动态合并数组的算法
发布时间:2020-12-13 17:10:06 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试为 PHPExcel对象中的每一行创建一个INSERT语句.由于我一直在努力迭代整个列(即转到B1 C1 D1,获取值,并将它们放入数组中),我选择获取每列的所有值并将它们放入多维中看起来像这样的数组: Array( [foo] = Array ( [0] = 250 [1] = 247 [2] = 279 [3
我正在尝试为
PHPExcel对象中的每一行创建一个INSERT语句.由于我一直在努力迭代整个列(即转到B1 C1 D1,获取值,并将它们放入数组中),我选择获取每列的所有值并将它们放入多维中看起来像这样的数组:
Array ( [foo] => Array ( [0] => 250 [1] => 247 [2] => 279 [3] => 249 ) [bar] => Array ( [0] => AM PROV [1] => AM PROV [2] => AM PENS [3] => AM PROV ) [schoo] => Array ( [0] => xxxx [1] => yyy [2] => zzz [3] => aaa ) ) 我想合并每个数组,以便索引0处的所有数据都在一个数组中,等等.我已经构建了一个通用工具,允许您从上传的电子表格中选择所需的列.它需要首先将列数据合并到一个数组中,然后它应该为每个数组生成INSERT语句.所以最终的可交付成果如下: INSERT INTO(foo,bar,schoo)VALUES(250,“AM PROV”,“xxxx”); 所有帮助赞赏. 更新:嘿所有,非常感谢你的答案.根据Mark的建议,我终于设法使用行和单元迭代器,并且它正在工作.我现在有一个单独的问题,但我认为这是我可以解决的问题.再次感谢. 解决方法<?php $uberArray = array( "foo" => array( 0 => 250,1 => 247,2 => 279,3 => 249,),"bar" => array( 0 => "AM PROV",1 => "AM PROV",2 => "AM PENS",3 => "AM PROV","schoo" => array( 0 => "xxxx",1 => "yyy",2 => "zzz",3 => "aaa",) ); $yourMysqlLink = mysql_connect('localhost','user','pass'); mysql_query('SET NAMES utf8'); // Adjust according to your encoding $colNames = array_keys($uberArray); $stringCols = array('bar','schoo'); $sqlInsertStr = 'INSERT INTO `your_table` (`'.implode('`,`',$colNames)."`) VALUES n"; $rows = array(); // Not really for iterating the first array,we just need a loop foreach ($uberArray[$colNames[0]] as $k => $v) { $vals = array(); foreach ($colNames as $v2) { $val = $uberArray[$v2][$k]; if (in_array($v2,$stringCols)) { $val = "'".mysql_real_escape_string($val,$yourMysqlLink)."'"; } $vals[] = $val; } $rows[] = "t(".implode(',',$vals).")"; } $sqlInsertStr .= implode(",n",$rows).';'; echo '<pre style="clear:both;">'.$sqlInsertStr.'</pre>'; ; 请注意,如果$uberArray较大(例如将插入字符串拆分为块),则可能需要针对性能原因进行一些调整.或者您可以将数据转换为CSV并使用MySQL (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |