0

シナリオは

元のソースは次のようになります (属性 email 、 name などはありません):

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[][])";
4

1 に答える 1

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++;
}
于 2012-05-08T09:30:21.063 に答える