web-dev-qa-db-fra.com

Convertir le premier élément d'un tableau en chaîne PHP

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?

36
Daric

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.

36
Berry Langerak

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"
                                                      // }
28
Salman A

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;
?>
11
Sven Simon

Vous pouvez utiliser la fonction reset () , elle retournera le premier membre du tableau.

8
Paolo Stefan

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.

6
John Hargrove

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
        )

)
5
Jonatan Ienco

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();
4
mexican_75

Convertir un tableau en chaîne en PHP:

  1. 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
    
  2. Ou utilisez la fonction PHP implode comme ceci:

    $my_array = array(4, 1, 8);
    echo implode($my_array);
    

    Quelles impressions:

    418
    
  3. 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>
    
2
Eric Leschinski

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

?>

http://www.php.net/manual/en/function.var-export.php#54440

2
ucefkh

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

2
Parth Chavda

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
1
Sorin Haidau

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.

0
Levit