1

私は次のコードを持っています:

while (list($key, $value) = each($arr)) {

    $implode_keys_values = @"$key=$value,";



    echo"$implode_keys_values";
}

xxxx=xxxx,xxxx=xxxx,xxxx=xxxx,xxxx=xxxx, キー/値の数に応じてエコーアウトします。

この動的に変化する文字列を取得して、最後のコンマを削除するにはどうすればよいですか?

心に留めておいてください:

$implode_keys_values = substr($implode_keys_values,0,-1);

機能しません。すべてのコンマが削除されます。

4

3 に答える 3

3

rtrim($implode_keys_values, ",")末尾のコンマをカットします。

rtrim の詳細については、こちらの PHP ドキュメントを参照してください。

$implode_keys_values = "";
while (list($key, $value) = each($arr)) {

    $implode_keys_values .= @"$key=$value,";
}
echo rtrim($implode_keys_values, ",");
于 2012-12-16T10:55:18.863 に答える
2

配列内のデータが複雑すぎない場合、PHP にはそのための関数が組み込まれています (持っている xxxxxx 値に対して機能し、他の値では壊れる可能性があります)。

echo http_build_query($arr, '', ',');

を参照してくださいhttp_build_query()

もう 1 つの方法は、反復子を使用して、現在の反復が最後の反復かどうかを確認することです。CachingIterator::hasNext()メソッドはそのために役立ちます:

$it = new CachingIterator(new ArrayIterator($arr));
foreach($it as $key => $value) {
    echo $key, '=', $value, $it->hasNext() ? ',' : '';
}

このバリアントは、どのデータでも機能します。

于 2012-12-16T11:10:20.363 に答える
0

あなたの場合、これは実装するより良い方法implode()です:

$data = array();
while (list($key, $value) = each($arr)) {
   $data[] = "$key=$value";
}
echo implode(",",$data);
于 2012-12-16T11:05:05.103 に答える