Implodieren Sie Daten aus einem mehrdimensionalen Array


79

Ich bin ein Anfänger in PHP und brauche eine schnelle Lösung für das folgende Problem, kann mir aber anscheinend keine einfallen lassen:

Ich habe so ein mehrdimensionales Array

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

Ich möchte das verwenden, implode()um irgendwie eine durch Kommas getrennte Zeichenfolge zurückzugeben, die solche tag_nameSchlüsselwerte enthält.

google, technology

Ist es möglich, diesen Effekt mit dieser Funktion zu erzielen? Wenn nicht, schlagen Sie bitte eine alternative Lösung vor.

Antworten:


181

Ziemlich einfach:

$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


und neu in php v5.5.0 , array_column:

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

4
Beachten Sie, dass Schließungen nur mit PHP 5.3 oder höher unterstützt werden.
Léo Lam

2
Die Lösung für> = 5.5.0 ist perfekt!
Key-Six

Weggehen mit> 5.5 ... :)
Sahu V Kumar

12

Obwohl diese Frage mit der Konvertierung von Zeichenfolgen zusammenhängt, bin ich darauf gestoßen, als ich eine einfache Möglichkeit zum Schreiben von Arrays in meine Protokolldateien suchte. Wenn Sie nur die Informationen wünschen und sich nicht um die genaue Sauberkeit eines Strings kümmern möchten, sollten Sie Folgendes berücksichtigen:

json_encode($array)

Ich weiß, es scheint wie ein Hack, funktioniert aber wie ein Zauber (PHP 5.4 hier). ;)
Paulo Bueno

1
@PauloBueno im Jahr 2020 sollten Sie wirklich, wirklich nicht PPH 5.4 verwenden !!
Martin

9

array_mapist eine Rückruffunktion, mit der Sie mit dem übergebenen Array spielen können. das sollte funktionieren.

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

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

5

sehr einfach dafür gehen

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

3

Wenn Sie "tag_name" mit der zugehörigen "blogTags_id" möchten, verwenden Sie: (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)));

1

In dieser Situation implodieren ($ array, ','); wird funktionieren, weil Sie nur die Werte wollen. In PHP 5.6 für mich arbeiten.

Wenn Sie die Schlüssel und Werte in einem wie implodieren möchten:
blogTags_id: 1
tag_name: google

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

Entschuldigung, ich verstehe falsch, weil der Titel "Daten aus einem mehrdimensionalen Array implodieren". Nun, meine Antwort beantwortet es immer noch irgendwie, kann jemandem helfen, wird es also nicht löschen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.