it-swarm.com.de

Implodieren Sie Daten aus einem mehrdimensionalen Array

Ich bin Neuling bei PHP und brauche eine schnelle Lösung für das folgende Problem, kann aber anscheinend keine Lösung finden:

Ich habe so ein multidimensionales 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 mit implode() irgendwie eine durch Kommas getrennte Zeichenfolge zurückgeben, die Werte des tag_name-Schlüssels enthält. 

google, technology

Kann man diesen Effekt mit der genannten Funktion erreichen? Wenn nicht, dann schlagen Sie bitte eine alternative Lösung vor.

61

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'));
142
Yoshi
join(',', array_map(function (array $tag) { return $tag['tag_name']; }, $array))
8
deceze

array_map ist eine Rückruffunktion, bei der Sie mit dem übergebenen Array spielen können. Das sollte funktionieren.

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

Obwohl diese Frage mit der Konvertierung von Strings zusammenhängt, bin ich darauf gestoßen und wollte eine einfache Möglichkeit, Arrays in meine Protokolldateien zu schreiben. Wenn Sie nur die Informationen wünschen und sich nicht für die genaue Sauberkeit eines Strings interessieren, können Sie Folgendes in Betracht ziehen:

json_encode($array)
7
Msencenb

sehr einfach gehen Sie dafür

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

Wenn Sie "tag_name" mit der zugehörigen "blogTags_id" verwenden 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
Tarik

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

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

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

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

0
Atanas Atanasov