J'ai un tableau PHP et je veux le convertir en chaîne.
Je sais que je peux utiliser join
ou implode
, mais dans mon cas, le tableau n'a qu'un seul élément. Pourquoi dois-je utiliser des valeurs de combinaison dans un tableau avec un seul élément?
Ce tableau est la sortie de ma fonction PHP qui renvoie un tableau:
Array(18 => 'Something');
Comment est-ce que je convertis ceci en chaîne?
Existe-t-il un autre moyen de convertir ce tableau en chaîne?
Vous ne voulez pas convertir le tableau en chaîne, vous voulez obtenir la valeur du seul élément du tableau, si je le lis correctement.
<?php
$foo = array( 18 => 'Something' );
$value = array_shift( $foo );
echo $value; // 'Something'.
?>
En utilisant array_shift, vous n'avez pas à vous soucier de l'index.
EDIT: Remarquez que array_shift n'est pas la seule fonction qui retournera une valeur unique. array_pop (), current (), end (), reset (), ils renverront tous ce seul élément. Toutes les solutions affichées fonctionnent. En utilisant le changement de tableau, vous pouvez être sûr que vous n'obtiendrez que la valeur premier du tableau, même s'il y en a plusieurs.
Existe-t-il un autre moyen de convertir cela tableau en chaîne?
Oui il y a. serialize()
. Il peut convertir divers types de données (y compris des objets et des tableaux) en une représentation sous forme de chaîne que vous pouvez unserialize()
/ ultérieurement. La sérialisation d'un tableau associatif tel que Array(18 => 'Somthing')
préservera les clés et les valeurs:
<?php
$a = array(18 => 'Something');
echo serialize($a); // a:1:{i:18;s:9:"Something";}
var_dump(unserialize('a:1:{i:18;s:9:"Something";}')); // array(1) {
// [18]=>
// string(9) "Something"
// }
Un moyen simple de créer un tableau dans un tableau de chaînes PHP est le suivant:
<?PHP
$array = array("firstname"=>"John", "lastname"=>"doe");
$json = json_encode($array);
$phpStringArray = str_replace(array("{", "}", ":"),
array("array(", "}", "=>"), $json);
echo phpStringArray;
?>
Vous pouvez utiliser la fonction reset () , elle retournera le premier membre du tableau.
implode
ou join
(c'est exactement la même chose) fonctionnerait ici. Sinon, vous pouvez simplement appeler array_pop
et obtenir la valeur du seul élément du tableau.
Si votre objectif est de sortir votre tableau en une chaîne de débogage: vous pouvez utiliser la fonction print_r () , qui reçoit un paramètre d'expression (votre tableau) et un paramètre de retour booléen facultatif. Normalement, la fonction est utilisée pour faire écho au tableau, mais si vous définissez le paramètre return sur true, elle renverra l'impression du tableau.
Exemple:
//We create a 2-dimension Array as an example
$ProductsArray = array();
$row_array['Qty'] = 20;
$row_array['Product'] = "Cars";
array_Push($ProductsArray,$row_array);
$row_array2['Qty'] = 30;
$row_array2['Product'] = "Wheels";
array_Push($ProductsArray,$row_array2);
//We save the Array impression into a variable using the print_r function
$ArrayString = print_r($ProductsArray, 1);
//You can echo the string
echo $ArrayString;
//or Log the string into a Log file
$date = date("Y-m-d H:i:s", time());
$LogFile = "Log.txt";
$fh = fopen($LogFile, 'a') or die("can't open file");
$stringData = "--".$date."\n".$ArrayString."\n";
fwrite($fh, $stringData);
fclose($fh);
Ce sera la sortie:
Array
(
[0] => Array
(
[Qty] => 20
[Product] => Cars
)
[1] => Array
(
[Qty] => 30
[Product] => Wheels
)
)
Vous pouvez utiliser print_r et html pour l’interpréter afin de le convertir en chaîne contenant de nouvelles lignes, comme ceci:
$arraystring = print_r($your_array, true);
$arraystring = '<pre>'.print_r($your_array, true).'</pre>';
Ou vous pouvez mélanger de nombreux tableaux et vars si vous faites cela
ob_start();
print_r($var1);
print_r($arr1);
echo "blah blah";
print_r($var2);
print_r($var1);
$your_string_var = ob_get_clean();
Utilisez la fonction PHP join
comme ceci:
$my_array = array(4, 1, 8);
print_r($my_array);
Array
(
[0] => 4
[1] => 1
[2] => 8
)
$result_string = join(',', $my_array);
echo $result_string;
Ce qui délimite les éléments du tableau par une virgule en une chaîne:
4,1,8
Ou utilisez la fonction PHP implode
comme ceci:
$my_array = array(4, 1, 8);
echo implode($my_array);
Quelles impressions:
418
Voici ce qui se passe si vous joignez ou implodez des paires clé/valeur dans un tableau PHP
php> $keyvalues = array();
php> $keyvalues['foo'] = "bar";
php> $keyvalues['pyramid'] = "power";
php> print_r($keyvalues);
Array
(
[foo] => bar
[pyramid] => power
)
php> echo join(',', $keyvalues);
bar,power
php> echo implode($keyvalues);
barpower
php>
La question des espaces ne se posant que lors de l'exportation de tableaux, vous pouvez utiliser la variable originale var_export () pour tous les autres types de variables. Cette fonction effectue le travail et, de l'extérieur, fonctionne de la même manière que var_export ().
<?php
function var_export_min($var, $return = false) {
if (is_array($var)) {
$toImplode = array();
foreach ($var as $key => $value) {
$toImplode[] = var_export($key, true).'=>'.var_export_min($value, true);
}
$code = 'array('.implode(',', $toImplode).')';
if ($return) return $code;
else echo $code;
} else {
return var_export($var, $return);
}
}
?>
Utilisez la fonction intégrée en PHP, implode(array, separator)
:
<?php
$ar = array("parth","raja","nikhar");
echo implode($ar,"/");
?>
Résultat: parth/raja/nikhar
Convertir un tableau en chaîne en PHP:
Utilisez la fonction PHP join
comme ceci:
$my_array = array(4,1,8);
print_r($my_array);
Array
(
[0] => 4
[1] => 1
[2] => 8
)
$result_string = join(',' , $my_array);
echo $result_string;
Ce qui délimite les éléments du tableau par une virgule en une chaîne:
4,1,8
Par souci d'exhaustivité et de simplicité, voici ce qui convient:
$str = var_export($array, true);
Cela fonctionne assez bien dans mon cas, mais d’autres semblent avoir des problèmes d’espace. Dans ce cas, la réponse de ucefkh
fournit une solution de contournement à partir d'un commentaire dans le manuel PHP.