Array a Cadena PHP?


¿Cuál es el mejor método para convertir una matriz PHP en una cadena?
Tengo la variable $type que es una matriz de tipos.

$type = $_POST[type];

Quiero almacenarlo como una sola cadena en mi base de datos con cada entrada separada por |:

Deportes|Festivales|Otros

Author: potashin, 2011-09-20

11 answers

Simplemente use implosionar

implode("|",$type);
 237
Author: Niet the Dark Absol,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-25 13:56:40

Puede usar json_encode()

<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);

echo json_encode($arr);
?>

Más tarde simplemente use json_decode() para decodificar la cadena de su base de datos. Cualquier otra cosa es inútil, JSON mantiene la relación de matriz intacta para su uso posterior!

 162
Author: Jakub,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-20 19:16:27

No, no desea almacenarlo como una sola cadena en su base de datos de esa manera.

Podría usar serialize() pero esto hará que sus datos sean más difíciles de buscar, más difíciles de trabajar y desperdicie espacio.

También podría hacer alguna otra codificación, pero generalmente es propenso al mismo problema.

Toda la razón por la que tienes un DB es para que puedas realizar un trabajo como este trivialmente. No necesita una tabla para almacenar matrices, necesita una tabla que pueda representar como un matriz.

Ejemplo:

id | word
1  | Sports
2  | Festivals
3  | Classes
4  | Other

Simplemente seleccionaría los datos de la tabla con SQL, en lugar de tener una tabla que se vea como:

id | word
1  | Sports|Festivals|Classes|Other

Así no es como alguien diseña un esquema en una base de datos relacional, sino que frustra totalmente su propósito.

 31
Author: Incognito,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-14 13:04:07

Una de las Mejores maneras:

echo print_r($array, true);
 25
Author: vvkatwss vvkatwss,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-09 18:13:51
json_encode($data) //converts an array to JSON string
json_decode($jsonString) //converts json string to php array

POR QUÉ JSON: Puede usarlo con la mayoría de los lenguajes de programación, la cadena creada por la función serialize() de php es legible solo en PHP, y no le gustará almacenar tales cosas en sus bases de datos, especialmente si la base de datos se comparte entre aplicaciones escritas en diferentes lenguajes de programación

 25
Author: sumit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-26 06:04:18

Implosionar():

<?php
$string = implode('|',$types);

Sin embargo, Incógnito es correcto, probablemente no quieras almacenarlo de esa manera's es un desperdicio total del poder relacional de tu base de datos.

Si está decidido a serializar, también podría considerar usar json_encode()

 10
Author: timdev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-20 19:15:28

Este guarda CLAVES Y VALORES

function array2string($data){
    $log_a = "";
    foreach ($data as $key => $value) {
        if(is_array($value))    $log_a .= "[".$key."] => (". array2string($value). ") \n";
        else                    $log_a .= "[".$key."] => ".$value."\n";
    }
    return $log_a;
}

Espero que ayude a alguien.

 9
Author: Ante Braovic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-09 18:12:09

Para almacenar matrices asociativas puede usar serialize:

$arr = array(
    'a' => 1,
    'b' => 2,
    'c' => 3
);

file_put_contents('stored-array.txt', serialize($arr));

Y carga usando unserialize:

$arr = unserialize(file_get_contents('stored-array.txt'));

print_r($arr);

Pero si necesita crear archivos dinámicos .php con array (por ejemplo, archivos de configuración), puede usar var_export(..., true);, así:

Guardar en archivo:

$arr = array(
    'a' => 1,
    'b' => 2,
    'c' => 3
);

$str = preg_replace('#,(\s+|)\)#', '$1)', var_export($arr, true));
$str = '<?php' . PHP_EOL . 'return ' . $str . ';';

file_put_contents('config.php', $str);

Obtener valores de matriz:

$arr = include 'config.php';

print_r($arr);
 3
Author: Guilherme Nascimento,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-17 20:19:12
$data = array("asdcasdc","35353","asdca353sdc","sadcasdc","sadcasdc","asdcsdcsad");

$string_array = json_encode($data);

Ahora puede insertar este valor string string_array en la base de datos

 3
Author: DejavuGuy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-17 13:50:04

Puede usar la función de cadena de PHP implode()

Como,

<?php
  $sports=$_POST['sports'];;
  $festival=$_POST['festival'];
  $food=$_POST['food'];
  $array=[$sports,$festival,$food];
  $string=implode('|',$array);
  echo $string;
?>

Si, por ejemplo, $sports='football'; $festival='janmastami'; $food='biriyani';

Entonces la salida sería:

football|janmastami|biriyani

Para más detalles sobre la función implode() de PHP consulte w3schools

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-01 22:48:32

Hay muchas maneras ,

Dos mejores maneras para esto son

-------1----------

<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
//ouputs as
{"a":1,"b":2,"c":3,"d":4,"e":5}


<?php
    $b = array ('m' => 'monkey', 'foo' => 'bar', 'x' => array ('x', 'y', 'z'));
    $results = print_r($b, true); // $results now contains output from print_r
    ?>
 -1
Author: Daud Malik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-21 11:38:08