web-dev-qa-db-fra.com

Array to String PHP?

Quelle est la meilleure méthode pour convertir un tableau PHP en chaîne?
J'ai la variable $type qui est un tableau de types.

$type = $_POST[type];

Je veux le stocker en tant que chaîne unique dans ma base de données, chaque entrée étant séparée par |:

Sports | Festivals | Autres

248
Philip Kirkbride

Il suffit d'utiliser imploser

implode("|",$type);
303
Niet the Dark Absol

Vous pouvez utiliser json_encode ()

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

echo json_encode($arr);
?>

Plus tard, utilisez simplement json_decode () pour décoder la chaîne de votre base de données. Tout le reste est inutile, JSON garde la relation de tableau intacte pour une utilisation ultérieure!

201
Jakub
json_encode($data) //converts an array to JSON string
json_decode($jsonString) //converts json string to php array

POURQUOI JSON: Vous pouvez l'utiliser avec la plupart des langages de programmation, la chaîne créée par la fonction serialize () de php est lisible uniquement en PHP, et vous n'aimerez pas stocker de telles choses dans vos bases de données spécialement si database est partagé entre des applications écrites dans différents langages de programmation

39
sumit

Non, vous ne voulez pas le stocker comme une seule chaîne dans votre base de données.

Vous pouvez utiliser serialize(), mais cela rendra vos données plus difficiles à rechercher, à utiliser et à utiliser de l’espace.

Vous pouvez également faire un autre encodage, mais il est généralement sujet au même problème.

La raison pour laquelle vous avez une base de données est que vous pouvez accomplir un travail comme celui-ci de manière triviale. Vous n'avez pas besoin d'une table pour stocker des tableaux, vous avez besoin d'une table que vous pouvez représenter sous forme de tableau.

Exemple:

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

Vous sélectionneriez simplement les données de la table avec SQL, plutôt que d'avoir une table qui ressemble à:

id | Word
1  | Sports|Festivals|Classes|Other

Ce n'est pas ainsi que quiconque conçoit un schéma dans une base de données relationnelle, il en va totalement à l'encontre du but recherché.

35
Incognito

Un des meilleurs moyens:

echo print_r($array, true);
31
vvkatwss vvkatwss

implode () :

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

Cependant, Incognito a raison, vous ne souhaiterez probablement pas le stocker de cette façon. C'est un gaspillage total de la puissance relationnelle de votre base de données.

Si vous ne voulez pas sérialiser, vous pouvez également envisager d'utiliser json_encode ()

11
timdev

Celui-ci sauve des clés et des valeurs

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;
}

J'espère que ça aide quelqu'un.

10
Ante Braovic
$data = array("asdcasdc","35353","asdca353sdc","sadcasdc","sadcasdc","asdcsdcsad");

$string_array = json_encode($data);

maintenant vous pouvez insérer cette valeur $ string_array dans la base de données

4
Akbar Mirsidikov

Pour les tableaux associatifs de magasin, vous pouvez utiliser serialize:

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

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

Et chargez avec unserialize:

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

print_r($arr);

Mais si vous avez besoin de créer des fichiers dinamic .php avec un tableau (par exemple, des fichiers de configuration), vous pouvez utiliser var_export(..., true);, comme ceci:

Enregistrer dans le fichier:

$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);

Obtenir des valeurs de tableau:

$arr = include 'config.php';

print_r($arr);
4

Vous pouvez utiliser la fonction PHP _ implode()

Comme,

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

Si, par exemple, $sports='football';$festival='janmastami';$food='biriyani';

Alors la sortie serait:

football|janmastami|biriyani

Pour plus de détails sur la fonction PHP implode (), reportez-vous à w3schools

3
user8140418