2016-12-20 34 views
1

在foreach語句中,我想查看某個數組元素是否已更改。如果不是,請增加我的櫃檯。如果是這樣,請重新設置爲一個。是否有捷徑可尋?像...有沒有一個PHP函數來確定一個數組元素是否已經改變?

$position = 1; 

foreach($rowDatas as $row) 
{ 
    //insert $row into db; 

    if(! hasChanged($row[0])) 
    { 
     $position = $postion + 1; 
    } 
    else 
    { 
     $position = 1; 
    } 
} 
+1

這看起來像你從數據庫記錄中生成數組?如果是這樣,只需選擇現有值並在插入新值之前使用比較運算符。否則請詳細說明你的問題。 –

+0

Im實際上是從Excel電子表格中生成數組並將其插入到數據庫中。插入第一行後,我想查看下一行中的第一個元素是否與前一行相同。希望這可以幫助。 – anitaBeerOr9

+0

Excel電子表格的每一行都存儲在數組$ rowDates中? – Kitson88

回答

0

找不到任何形式的功能,會做我想做的,所以我創建了一些解決方法。 $ rowDatas [2] [0];是我想要比較的第一個元素。

$position = 0; 
$a = $rowDatas[2][0]; 


     try 
     { 

      foreach($rowDatas as $row) 
      { 

       if($row[0] == $a){ 
        $position++; 
       } 
       else { 
         $position = 1; 
         $a = $row[0]; 
       } 
        $stmt = $dbh->prepare('INSERT INTO Sandbox (row0, row1, row2, Position) VALUES (?, ?, ?, ?)'); 
        $stmt->bindParam(1, $row[0], PDO::PARAM_STR); 
        $stmt->bindParam(2, $row[1], PDO::PARAM_STR); 
        $stmt->bindParam(3, $row[2], PDO::PARAM_INT); 
        $stmt->bindParam(4, $position, PDO::PARAM_INT); 
        $status = $stmt->execute(); 

      } 
0

我建議你使用array_diff當且僅當你不關心行內的哪個項目被修改。

$a = $rowDatas[2]; 

foreach($rowDatas as $row) { 
    if (array_diff($a, $row)) { 
     $position++; 

     // ... 
    } 
} 
相關問題