2

DB からの列を連想配列に取り込む mysql フェッチがあります。列名の 1 つが AMOUNT です。したがって、次のようになります。

Array ( [0] => Array ( [ID] => 259 [YEARMONTH] => 201105 [AMOUNT] => 54 [VALUE] => 12 ) [1] => Array ( [ID] => 259 [YEARMONTH] => 201106 [AMOUNT] => 32 [VALUE] => 34 ) )

私がやりたいのは、次のように AMOUNT をエコーすることだけです。

54,32

末尾または見出しのコンマがないように。

これに対するエレガントなソリューションの提案はありますか? ありがとう !

4

3 に答える 3

5

前提条件

  • $arrayすべての行の配列が含まれます。

コード

foreach ($array as $row) {

    $newArray[] = $row['AMOUNT']; //Add it to the new array

}
echo implode(',',$newArray); //Implode the array and echo it out.

PHP 5.3+ を使用している場合は、以下も機能します。

echo implode(",",array_map(function($a) { return $a["AMOUNT"]; }, $array));

マーリンの礼儀

もっと

  • implode- 配列と区切り記号を取り、配列の「区切り記号」で区切られた値の文字列を返します。
于 2011-10-16T10:34:27.937 に答える
1

最初にすべての金額の配列を作成し、次にimplode結果を作成します。

于 2011-10-16T10:33:41.903 に答える
1

末尾または見出しのカンマを付けて、http ://php.net/manual/en/function.rtrim.php (またはそれぞれ http://php.net/manual/en/function.ltrim.php)を使用します。

コード

$a = '';
foreach ($test as $t)
    $a .= $t['AMOUNT'] . ',';
$result = rtrim($a, ',');

代替案

内破によるアプローチも正しいですが、私の解決策はより高速です。

パフォーマンス

10000000 回の実行で 2 メンバー配列でテスト済み。

Truth が提案するソリューションの実行には 171 秒かかり、Mearlyn が提案するソリューションは 358 秒かかります!! 数秒で実行でき、私のソリューションはわずか 18 秒で済みます!!

私はpastebin.com/fKbxfpy1を使用して言及された時間を取得しました...

于 2011-10-16T10:34:21.917 に答える