0

PHP の implode 関数に非常に奇妙な問題があります。驚くべきことに、配列の要素の 1 つにいくつかの白い文字 (スペース) を追加します。

これが私のコードです:

$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 関数の既知のバグですか?

ありがとう!

4

2 に答える 2

2

ほぼ確実に、元の配列値にこれらの文字が含まれています。コメント投稿者が言ったように、implode()奇妙なことは何もしません...隠されたタブやスペース、または他の空白文字がないかデータをもう一度確認してください。

于 2012-06-13T10:45:08.580 に答える
0

空白がないことを確認したい場合は、いくつかの php 関数 (str_replace、trim、または reg_exp 関数) を使用してそれらを取り除くことをお勧めします。Implode は、指定されたセパレーター以外は何も追加しません。

于 2012-06-13T10:52:44.723 に答える