web-dev-qa-db-ja.com

多次元配列からデータを実装する

私はPHPの初心者であり、次の問題に対する迅速な解決策が必要ですが、それを思い付くことができないようです。

私はそのような多次元配列を持っています

Array
(
    [0] => Array
        (
            [blogTags_id] => 1
            [tag_name] => google
            [inserted_on] => 2013-05-22 09:51:34
            [inserted_by] => 2
        )

    [1] => Array
        (
            [blogTags_id] => 2
            [tag_name] => technology
            [inserted_on] => 2013-05-22 09:51:34
            [inserted_by] => 2
        )
)

implode()を使用して、何らかの方法でtag_nameキーの値を含むコンマ区切りの文字列を返します。

google, technology

上記の機能でこの効果を達成することは可能ですか?そうでない場合は、代替ソリューションを提案してください。

65
CobaltBabyBear

とても簡単:

$input = array(
  array(
    'tag_name' => 'google'
  ),
  array(
    'tag_name' => 'technology'
  )
);

echo implode(', ', array_map(function ($entry) {
  return $entry['tag_name'];
}, $input));

http://3v4l.org/ltBZ


php v5.5.0の新機能 array_column

echo implode(', ', array_column($input, 'tag_name'));
150
Yoshi

この質問は文字列変換に関連していますが、ログファイルに配列を簡単に書き込む方法を探しているときに、私はこれにつまずきました。情報だけが必要で、考慮する文字列の正確さを気にしない場合:

json_encode($array)
11
Msencenb

array_map はコールバック関数であり、渡された配列で遊ぶことができます。これは動作するはずです。

$str = implode(',', array_map(function($el){ return $el['tag_id']; }, $arr));
9
Farhan
join(',', array_map(function (array $tag) { return $tag['tag_name']; }, $array))
8
deceze

このために非常に簡単に行きます

$str;
foreach ($arrays as $arr) {
$str .= $arr["tag_name"] . ",";
}
$str = trim($str, ',');//removes the final comma 
5
Vigneswaran S

「tag_name」と「blogTags_id」を関連付けたい場合:(PHP> 5.5)

$blogDatas = array_column($your_multi_dim_array, 'tag_name', 'blogTags_id');
echo implode(', ', array_map(function ($k, $v) { return "$k: $v"; }, array_keys($blogDatas), array_values($blogDatas)));
2
Tarik

この状況では、implode($ array、 '、');値のみが必要なため、機能します。 PHP 5.6で私のために働いています。

キーと値を次のように分解する場合:
blogTags_id:1
tag_name:google

$toImplode=array();
foreach($array as $key => $value) {
$toImplode[]= "$key: $value".'<br>';
}
$imploded=implode('',$toImplode);

「多次元配列からデータを実装する」というタイトルのため、申し訳ありませんが間違っています。まあ、私の答えはまだ何とか答えています、誰かを助けるかもしれないので、それを削除しません。

1
Atanas Atanasov