convert - php associative array to string
Implode datos de una matriz multidimensional (7)
Aunque esta pregunta está relacionada con la conversión de cadenas, me encontré con esto al querer una forma fácil de escribir matrices en mis archivos de registro. Si solo quieres la información, y no te importa la limpieza exacta de una cadena, podrías considerar:
json_encode($array)
Soy un novato en PHP y necesito una solución rápida para el siguiente problema, pero parece que no puedo encontrar uno:
Tengo una matriz multidimensional como tal
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
)
)
Quiero usar implode()
para devolver de alguna manera una cadena separada por comas que contenga los valores de la clave tag_name
como tal.
google, technology
¿Es posible lograr este efecto con dicha función? Si no, por favor sugiera una solución alternativa.
Bastante sencillo:
$input = array(
array(
''tag_name'' => ''google''
),
array(
''tag_name'' => ''technology''
)
);
echo implode('', '', array_map(function ($entry) {
return $entry[''tag_name''];
}, $input));
y nuevo en php v5.5.0, array_column
:
echo implode('', '', array_column($input, ''tag_name''));
En esta situación implosión ($ array, '',''); funcionará, ya que solo quieres los valores. En PHP 5.6 trabajando para mí.
Si quiere implotar las claves y los valores en uno como:
blogTags_id: 1
tag_name: google
$toImplode=array();
foreach($array as $key => $value) {
$toImplode[]= "$key: $value".''<br>'';
}
$imploded=implode('''',$toImplode);
Lo siento, entiendo mal, porque el título "Implode datos de una matriz multidimensional". Bueno, mi respuesta todavía la respondo de alguna manera, puede ayudar a alguien, por lo que no la eliminará.
Si quieres "tag_name" con "blogTags_id" asociado, usa: (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)));
muy simple ir por esto
$str;
foreach ($arrays as $arr) {
$str .= $arr["tag_name"] . ",";
}
$str = trim($str, '','');//removes the final comma
array_map
es una función de devolución de llamada, donde puede jugar con la matriz pasada. Esto debería funcionar.
$str = implode('','', array_map(function($el){ return $el[''tag_id'']; }, $arr));
join('','', array_map(function (array $tag) { return $tag[''tag_name'']; }, $array))