2012-06-13 1 views
0

У меня очень, очень странная проблема с функцией взлома PHP. Это удивительно добавляет некоторые белые символы (пробелы) к одному из элементов массива.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 
} 

Зачем оно добавляет эти места? Это какая-то известная ошибка функции implode?

Спасибо!

+1

Вы уверены, что эти символы не существуют в вашем исходном массиве? –

+3

Это не так. Вероятно, некоторые (скрытые) символы в строке. – PeeHaa

+1

можем ли мы получить исходный массив? и предыдущее значение '$ where' – Adi

ответ

2

У вас почти наверняка есть эти символы в исходных значениях массива. Как отмечают комментаторы, implode() ничего не делает ... Завершите свои данные снова для скрытых вкладок или пробелов или других символов пробелов.

0

Если вы хотите удостовериться, что нет пробелов, лучше разделите их на некоторые функции php (функции str_replace, trim или reg_exp). Implode не добавляет ничего, кроме данного разделителя.