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
11 answers
Simplemente use implosionar
implode("|",$type);
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!
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.
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);
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
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
<?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()
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.
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);
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
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
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
?>
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