2013-05-23 11 views
55

jestem nowicjuszem w PHP i muszę szybkie rozwiązanie następującego problemu, ale nie wydaje się pochodzić z jednego:dane implozji z wielowymiarowej tablicy

Mam wielowymiarową tablicę jak tak

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 
     ) 
) 

chcę użyć implode() jakoś zwracać ciąg zawierający wartości oddzielonych przecinkami tag_name klucza jak tak.

google, technology 

Czy można osiągnąć ten efekt za pomocą tej funkcji? Jeśli nie, zaproponuj alternatywne rozwiązanie.

Odpowiedz

119

dość prosta:

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

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

http://3v4l.org/ltBZ0


i nowego w php v5.5.0, array_column:

echo implode(', ', array_column($input, 'tag_name')); 
+4

Pamiętaj, że zamknięcia są obsługiwane tylko w PHP 5.3 lub nowszym. –

+1

Rozwiązanie dla> = 5.5.0 jest idealne! –

+0

Odejście z> 5.5 ... :) –

8
join(',', array_map(function (array $tag) { return $tag['tag_name']; }, $array)) 
8

array_map jest funkcja oddzwaniania, gdzie ty może grać z przekazaną tablicą. to powinno działać.

$str = implode(',', array_map(function($el){ return $el['tag_id']; }, $arr)); 
4

bardzo prosty przejdź do tego

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

Jeśli chcesz "nazwa_znacznika" z powiązanym "blogTags_id" użytkowania: (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

Chociaż ta kwestia jest związana z konwersja ciągów, natknąłem się na to, chcąc w łatwy sposób napisać tablice do moich plików dziennika. Jeśli chcesz tylko info, i nie dbają o dokładnym czystości ciąg można rozważyć:

json_encode($array) 
0

w tej sytuacji implode ($ array, „”); będzie działać, ponieważ chcesz tylko wartości. W PHP 5.6 pracuje dla mnie.

Jeśli chcesz implozji klucze i wartości w jednej jak:
blogTags_id: 1
nazwa_znacznika: google

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

Niestety, rozumiem tak, becasue tytuł „implozji dane z multi -dwymiarowa tablica ". Cóż, moja odpowiedź wciąż w jakiś sposób odpowiada, może komuś pomóc, więc jej nie usunie.