2016-07-22 7 views
3

変数$tagにこの種の配列があります。私がやろうとしている何文字列への多次元配列の簡略化

Array 
(
    [0] => Array 
     (
      [tag_name] => tag-1 
     ) 
    [1] => Array 
     (
      [tag_name] => tag-2 
     ) 
    [2] => Array 
     (
      [tag_name] => tag-3 
     ) 
) 

は、すべてのタグ名を取得し、それテキスト入力フィールドの値を作る昏睡でそれらを内破です。

私は多くの異なる方法でforeachループを試しましたが、あまり成功しませんでした。私はCodeIgniterを使用しています。

+0

'

+1

'implode( '、'、array_column($ tag、 'tag_name'));; ' – splash58

答えて

3

あなたは試してみてくださいarray_columnjoinまたはimplode

続い使用することができ、この:

$string = join(',', array_column($array, 'tag_name')); 

説明:

array_columnは、入力配列から単一の列から値を返す

ご使用のアレイの012インデックスtag_nameの値を含む配列を返します、すなわち返される配列は次のようになります。

joinまたは implodeに参加
Array 
(
    [0] => tag-1 
    [1] => tag-2 
    [2] => tag-3 
) 

、ご希望の文字列を取得、

//$string = "tag-1,tag-2,tag-3" 
+0

ありがとうございました。それは完全に動作します。 – mzcoxfde

+0

ギャルドが助けてくれました:) –

+0

@RobinPanta説明を追加できますか? Pは、質問を訪問した質問者や他の人に、この回答の仕組みが分かるようにしています。 –

2

シンプルかつ明白な解決策は次のようになります。

$res = ""; 
for ($i = 0; $i < count($tag); $i++) { 
    $res .= $tag[$i]["tag_name"] . ","; 
} 
$res = trim($res, ","); //Removing the extra commas 
echo $res; 

基本的には、配列全体を反復処理し、すべての要素を反復処理します.y o tag_name$res文字列に追加します。

2

使用array_columnarray_mapを使用して

$tag = implode(', ', array_column($array, 'tag_name')); 

$tag = implode(', ', array_map(function ($tag) { 
      return $tag['tag_name']; 
     }, $array)); 
1

シンプルな1つのライナー!!

$array = [ 
    [ 
     "tag_name" => 'tag-1' 
    ], 
    [ 
     "tag_name" => 'tag-2' 
    ], 
    [ 
     "tag_name" => 'tag-3' 
    ], 
]; 

implode(',', array_column($array, 'tag_name'));