22

データ構造に関して言えば、通信の配列があり、各communication_id 自体に id、score、content の 3 つの情報が含まれています。

コンマで区切られた ID のリストを取得するために、この配列を内破したいのですが、どうすればよいですか?

4

5 に答える 5

59

PHP5.5のアップデート

PHP 5.5ではarray_column、これがクラス全体のarray_map使用法への便利なショートカットとして導入されています。ここでも適用できます。

$ids = array_column($communications, 'id');
$output = implode(',', $ids);

元の回答

通信の配列からIDだけの配列を作成する必要があります。そうすれば、内包は取るに足らないものになるでしょう。

ヒント:そのための関数はですarray_map

解決:

PHP 5.3を想定しています。そうでない場合は、コールバックを文字列として記述する必要があります。

$ids = array_map(function($item) { return $item['id']; }, $communications);
$output = implode(',', $ids);
于 2011-03-09T17:44:12.653 に答える
3

http://snipplr.com/view.php?codeview&id=10187から:

class Format {
    static public function arr_to_csv_line($arr) {
        $line = array();
        foreach ($arr as $v) {
            $line[] = is_array($v) ? self::arr_to_csv_line($v) : '"' . str_replace('"', '""', $v) . '"';
        }
        return implode(",", $line);
    }

    static public function arr_to_csv($arr) {
        $lines = array();
        foreach ($arr as $v) {
            $lines[] = self::arr_to_csv_line($v);
        }
        return implode("\n", $lines);
    }

}
于 2011-03-09T17:45:51.627 に答える
0

答えを探している他の人にとって、これは私ができることです:

$singleDimensionalArray = array();

foreach($array["1"]["2"]["3"][...] as $value) {
    $singleDimensionalArray[] = $value;
}

これを3次元配列で使用しました。

于 2014-06-03T01:41:06.010 に答える