在array_values函数内循环

时间:2012-12-06 05:46:00

标签: php mysql arrays variables

我想遍历包含$ i变量的数组值,

我的数组代码看起来像这样,

foreach($fields_names as $k => $v) {
      $handle_data[] ='$rowdata[$i][$fields_names[\''.$v.'\']]';
}

for($i=0;$i<$number_rows_excel;$i++){

$sql.= "('".implode("','", array_values($handle_data))."'),". "<br/>";

        }

当我回复$ sql时,我会这样,

INSERT INTO eximport (`S.No`, `Patent#`, `Title`) VALUES ('$rowdata[$i][$fields_names['S.No']]','$rowdata[$i][$fields_names['Patent#']]','$rowdata[$i][$fields_names['Title']]')

它应该像这样显示

INSERT INTO eximport (`S.No`, `Patent#`, `Title`) VALUES ('$rowdata[0][$fields_names['S.No']]','$rowdata[0][$fields_names['Patent#']]','$rowdata[0][$fields_names['Title']]')

请给出一些建议,我如何使用变量$ i循环遍历数组值

感谢

3 个答案:

答案 0 :(得分:1)

我使用了这段代码,它帮助我插入行,为插入的每个值附加','      foreach($ val_ary as $ new_data_string){         $ newArray [] = implode(“','”,$ new_data_string);             }

//Inserting data into the table     
        for($tr=0;$tr< $data->sheets[0]['numRows']-2;$tr++)
        {
         $sql ="INSERT INTO eximport($fieldnames)values('$newArray[$tr]')";
         mysql_query($sql) or die("Error in Query: " . mysql_error());  
         //$p1 = $db->insert_id;
         }

答案 1 :(得分:0)

试试这个

$i=0;
foreach($fields_names as $k => $v) {
    $handle_data[] ='$rowdata['.$i.'][$fields_names[\''.$v.'\']]'; $i++;
}

希望这会对你有所帮助。

答案 2 :(得分:0)

我假设您不希望在查询中写入$rowdata[]部分,但是该数组条目的实际值是什么?

所以,你应该简单地嵌套你的循环,就像这样。请记住,您正在循环每个Field,这意味着,您不需要对数据进行任何内爆。我假设您的数据集在数组$data内,而$ field_names只是一个字段列表。:

$data = array(
   array("name" => "DataSet1", "value" => 56),
   array("name" => "DataSet2", "value" => 5)
);

$field_names = array("name","value");

$sql = "INSERT INTO table (";
$sql .= implode($fields_names,",");
$sql .= ")VALUES";

for($i=0; $i<count($data); $i++){
   $sql .= "(";
   foreach($fields_names as $k => $v) {
      $sql.= "'".$data[$i][$v]."',";

   }
   //remove trailing ","
   $sql = substr($sql,0,-1);
   $sql .= "),";
}
//remove trailing ","
$sql = substr($sql,0,-1);

这将产生:

INSERT INTO table (name,value)VALUES('DataSet1','56'),('DataSet2','5')