情景是
原始来源看起来像(没有属性电子邮件,名称......等):
a@a.com leo
foodil@g.com NULL
我想插入一条这样的记录:
首先,我有一个我需要插入的数据字段的数组
$field = Array ( [0] => Email [1] => Name )
其次,我有一组邮件
$mail = Array ( [0] => a@a.com [1] => foodil@g.com )
=============================================== ==============================
最后,我有一个多维数组,有数据字段,例如姓名,
$set = Array ( [1] => Array ( [1] => leo [4] => NULL ) )
但是,它可以是多个字段, 例如。它也可以有一个电话领域(还有地址,编码......等等),然后它将是:
它是随机索引,因为计数跳过邮件列
例如
leo a@a.com 4343343
NULL foodil@g.com 3453343
$field = Array ( [0] => Email [1] => Name [2] => Phone )
$set = Array ( [0] => Array ( [1] => leo [4] => NULL ) [2] => Array ( [1] => 4343343 [4] => 3453343 ))
=============================================== ==============================
问题是,如何插入这样的场景? : 查询应该如下所示
邮件将被测试,只有当它是真的,然后插入。 例如。 a@a.com无效,那么我必须跳过leo和4343343
$query="INSERT INTO subscriber (Email,Name,Phone) VALUES ($mail[] , $set[][], $set[][])";
答案 0 :(得分:1)
使用它会产生2D数组。 获得数组后使foreach循环和放大插入数据库。
$field = array ( '0' => 'Email', '1' => 'Name', '2' =>'Phone' ) ;
$mail = array ( '0' => 'a@a.com', '1' => 'foodil@g.com' );
$set = array ( '0' => array ( '1' => 'leo', '4' => NULL ), '2' => array ( '1' => '4343343', '4' => '3453343' )) ;
$res = array();
$key1= array_keys($mail);
foreach($key1 as $a=>$key){
if(array_key_exists($key, $set)){
$res[$a]['Email'] =$mail[$key];
$res[$a]['Name'] = $set[$key]['1'];
$res[$a]['Phone'] = $set[$key]['4'];
unset($set[$key]);
}else{
$res[$a]['Email'] =$mail[$key];
$res[$a]['Name'] = '';
$res[$a]['Phone'] = '';
}
}
$total = count($res);
foreach($set as $q){
$res[$total]['Email'] ='';
$res[$total]['Name'] = $q[1];
$res[$total]['Phone'] = $q[4];
$total++;
}