2012-06-13 35 views
0

我對PHP的implode函數有非常非常奇怪的問題。令人驚訝的是,它向數組元素中的一個添加了一些白色字符(空格)。PHP implode奇怪地將白色字符添加到它的輸出 - 爲什麼?

這裏是我的代碼:

$cities = array(...,5792753,...); 

$where .= ' AND gr.geo_city IN(' . implode(',', $cities) . ') '; 

//it displays something like: ... AND gr.geo_city IN(...,5   792753,...) 
//but it should display: ... AND gr.geo_city IN(...,5792753,...) 
//PLEASE NOTE SPACES IN THE EXAMPLE ABOVE!! 
echo $where;    

我做了一些調試,似乎原來的值不包含任何字符白色。這裏是我用來檢查它的代碼:

foreach($cities as $ct) 
{ 
    if(strpos($ct,'792753') !== FALSE) 
    echo $ct;//it displays 5792753, not 5...792753 
} 

爲什麼它有添加這些空間?它是一些已知的內爆函數的bug嗎?

謝謝!

+1

你確定這些字符不存在於你原來的數組中嗎? –

+3

它不這樣做。可能只是一些(隱藏)字符串中的字符。 – PeeHaa

+1

我們可以得到原始數組嗎?和'$ where'的前一個值 – Adi

回答

2

您幾乎可以肯定在原始數組值中包含這些字符。正如評論者所說,implode()沒有什麼奇怪的...再次檢查您的數據是否有隱藏的標籤或空格或其他空白字符。

0

如果你想確保沒有空格,最好用一些php函數(str_replace,trim或reg_exp函數)去掉它們。 Implode不會添加除給定分隔符之外的任何內容。