2012-10-02 28 views
-1

問題是id,startendupdateLine的內部得到值2。我可以在Zend Studio中調試代碼時看到這一點。這是什麼原因?將該值解析爲函數

更新:我需要能夠解析字符串值的函數updateLine

include_once 'include/connect_db.php'; 

$id = '2230'; 
$start = '2012-10-02 11:36:13'; 
$end = '2012-10-02 11:36:13'; 

$size = count($id); 
var_dump($size); 

for($i = 0; $i < $size; $i++){ 
updateLine($id[$i], $start[$i], $end[$i]); 
} 

function updateLine($id, $start, $end){ 
    var_dump($id); 
    var_dump($start); 
    $sql = "UPDATE `Sequence` 
      SET start='" . $start . "', fin='" . $end . "' 
      WHERE id='" . $id . "'";  
    $result=execute_query($sql); 
    var_dump($sql); 
} 
+2

因爲'$ id','$ start'和您的通話'$ end'作爲字符數組處理。你想要做什麼?請詳細說明一下。 –

+0

'$ id $ start $ end'不是數組,但是將它們當作數組處理? – JvdBerg

+0

@JvdBerg最初他們是數組。我只是簡化了這個例子。 –

回答

1

我剛剛測試,我得到下面的代碼沒有任何錯誤:

$id = array('2230', '2245'); 
$start = array('2012-10-02 11:36:13', '2012-10-15 11:36:13'); 
$end = array('2012-10-02 11:36:23', '2012-10-15 11:36:23'); 

$size = count($id); 
var_dump($size); 

for($i = 0; $i < $size; $i++){ 
    updateLine($id[$i], $start[$i], $end[$i]); 
} 

function updateLine($id, $start, $end){ 
    $sql = "UPDATE `Sequence` 
      SET start='" . $start . "', fin='" . $end . "' 
      WHERE id='" . $id . "'";  
    $result=execute_query($sql); 
} 
-2

因爲$ ID,$開始,$到底是不是數組,數組訪問非陣列的結果幾乎不可預料的結果

你必須使用類似這樣

$id = array('2230'); 
$start = array('2012-10-02 11:36:13'); 
$end = array('2012-10-02 11:36:13'); 

或刪除for循環

+1

是的,他們是。字符串可以作爲字符數組訪問(傳統上是以字符數組的形式實現的)。將它們作爲數組進行處理是完全定義的。 – slugonamission

+0

是的,但在大多數情況下,這是偶然發生的 – Philipp

2

[]操作符訪問字符串的第i個字符。 i是0,所以你得到2,2和2的三個值。

1

您正試圖撥打updateLine($id[$i], $start[$i], $end[$i]),這是完全不可思議的。只要在沒有for循環的情況下調用它,並且沒有像updateLine($id, $start, $end)那樣的索引,那麼你就很好。否則,正如我的評論所述,您只有一個字符串(= char數組),並通過索引操作符[]訪問char,這也是其他人提到的。

只有當您計劃在像$id = array("trololo", "blabla")這樣的數組中存儲不同的值時,您應該像首先一樣對它們進行迭代。