Como hacer un string con los elementos de un array - php

¿Hay alguna forma de hacer una cadena de texto (string) con los elementos de un array?

Si te has planteado esta pregunta la respuesta es sí. Se puede construir una cadena que represente los valores de un array. En PHP tenemos la función implode() que realiza este paso por nosotros. No obstante, su uso genera un mensaje tipo Notice informando sobre la conversión de un array a string. Aunque este mensaje no hace que nuestro script deje de funcionar, sin duda alguna no querrás mostrarlo a los usuarios (aunque se pueden evitar mostrar estos mensajes en la configuración de PHP). Por ello es recomendable usar otra solución: un bucle foreach que construya la cadena. Aunque yo soy más partidario de usar el bucle foreach para este propósito, ya que aporta mucha más flexibilidad, describiré aquí ambos métodos.

Uso de la función PHP implode()

La función implode() une los elementos de un array con un "pegamento" y devuelve una cadena con la representación de los valores de cada elemento separados por el "pegamento".

  • Sintaxis: implode(glue,array). El array será el array que queremos pasar a string y glue será el pegamento a usar. El pegamento es una cadena que quedará entre los valores de cada elemento; por defecto es una cadena vacía. Si el array está vacío la función implode() devolverá un string vacío de longitud cero.

Ejemplo:

<?php 
  $array = array('Paco','Manolo','Victor'); 
  $cadena = implode(',',$array); 
  echo $cadena; 
  //devuelve "Paco,Manolo,Victor" 
?> 

Uso de un bucle foreach para construir una cadena desde un array

El uso de un bucle foreach para construir una cadena desde un array nos permite una mayor flexibilidad como por ejemplo poder incluir en la cadena la posición, o el key en su caso, junto al valor de cada elemento, construir una cadena desde un array asociativo o desde un array multidimensional, etc

<?php 
  $array = array('Paco','Manolo','Victor'); 
  $cadena = ''; 
  foreach($array as $key=>$value) { 
     $cadena .= "value"; 
  } 
  echo $cadena; 
  //devuelve "PacoManoloVictor" 
?>

La función del ejemplo anterior es muy simple y, como ves, sería recomendable introducir un separador (glue) entre el valor de cada elemento del array, aunque eso dependerá de las necesidades de cada cual. Aquí dejo una función que podría satisfacer casi cualquier necesidad:

function ArraytoString( $array = null, $inner_glue = '=', $outer_glue = ' ', $keepOuterKey = false )
    {
        $output = array();

        if(is_array($array))
        {
            foreach ($array as $key => $item)
            {
                if(is_array ($item))
                {
                    if($keepOuterKey) {
                        $output[] = $key;
                    }
                    // Si el valor es un array, hacerlo de nuevo
                    $output[] = ArraytoString( $item, $inner_glue, $outer_glue, $keepOuterKey);
                }
                else {
                    $output[] = $key.$inner_glue.'"'.$item.'"';
                }
            }
        }

        return implode( $outer_glue, $output);
    } 

Con esta función para obtener el mismo resultado que con el sencillo implode del primer ejemplo llamaríamos a la función del siguiente modo:

<?php 
 $array = array('Paco','Manolo','Victor'); 
 echo ArraytoString($array = null, '', ', ', false); 
?> 


Comentarios (1)

Community Builder Avatar
JoeCoolSv
(09.03.2012 (18:50:18))
excelente función Sí No Me ha ahorrado unas horas de trabajo porque justo es lo que necesito.

Smileys

:confused::cool::cry::laugh::lol::normal::blush::rolleyes::sad::shocked::sick::sleeping::smile::surprised::tongue::unsure::whistle::wink: