Array om PHP te stringen?

Wat is de beste methode om een PHP-array om te zetten in een string?
Ik heb de variabele $typedie een reeks typen is.

$type = $_POST[type];

Ik wil het als een enkele string in mijn database opslaan, waarbij elk item wordt gescheiden door |:

Sport|Festivals|Overig


Antwoord 1, autoriteit 100%

Gebruik implode

implode("|",$type);

Antwoord 2, autoriteit 64%

U kunt json_encode()

gebruiken

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

Gebruik later gewoon json_decode()om de string te decoderen van uw DB.
Al het andere is nutteloos, JSON houdt de array-relatie intact voor later gebruik!


Antwoord 3, autoriteit 13%

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

WAAROM JSON: je kunt het gebruiken met de meeste programmeertalen, de string die is gemaakt door de serialize()-functie van php is alleen leesbaar in PHP, en je zult dergelijke dingen niet graag in je databases opslaan, vooral als de database wordt gedeeld tussen applicaties geschreven in verschillende programmeertalen


Antwoord 4, autoriteit 11%

Een van de beste manieren:

echo print_r($array, true);

Antwoord 5, autoriteit 9%

Nee, je wilt het niet zo als een enkele string in je database opslaan.

U zou serialize()kunnen gebruiken, maar dit maakt uw gegevens moeilijker te doorzoeken, moeilijker om mee te werken en verspilt ruimte.

Je zou ook wat andere codering kunnen doen, maar het is over het algemeen vatbaar voor hetzelfde probleem.

De hele reden dat je een DB hebt, is dat je dit soort werk triviaal kunt uitvoeren. Je hebt geen tabel nodig om arrays op te slaan, je hebt een tabel nodig die je als array kunt voorstellen.

Voorbeeld:

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

Je zou gewoon de gegevens uit de tabel selecteren met SQL, in plaats van een tabel te hebben die eruitziet als:

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

Zo ontwerpt niemand een schema in een relationele database, het gaat volledig voorbij aan het doel ervan.


Antwoord 6, autoriteit 4%

implode():

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

Incognito heeft echter gelijk, u wilt het waarschijnlijk niet op die manier opslaan — het is een totale verspilling van de relationele kracht van uw database.

Als je niet klaar bent met serialiseren, kun je ook overwegen om json_encode()

te gebruiken


Antwoord 7, autoriteit 3%

Deze slaat KEYS & WAARDEN

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

Ik hoop dat het iemand helpt.


8, Autoriteit 2%

$data = array("asdcasdc","35353","asdca353sdc","sadcasdc","sadcasdc","asdcsdcsad");
$string_array = json_encode($data);

Nu kunt u deze $ string_array-waarde invoegen in de database


9

U kunt de PHP-string-functie gebruiken implode()

Zoals,

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

Als, bijvoorbeeld,
$sports='football';
$festival='janmastami';
$food='biriyani';

Vervolgens zou de uitvoer zijn:

football|janmastami|biriyani

Voor meer informatie over PHP Implode () functie Raadpleeg W3schools


10

Er zijn veel manieren,

Twee beste manieren hiervoor zijn

$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}
$b = array ('m' => 'monkey', 'foo' => 'bar', 'x' => array ('x', 'y', 'z'));
$results = print_r($b, true); // $results now contains output from print_r

11

U kunt serialize:

$array = array('text' => 'Hello world', 'value' => 100);
$string = serialize($array); // a:2:{s:4:"text";s:11:"Hello world";s:5:"value";i:100;}

Gebruik unserializeom string naar array te converteren:

$string = 'a:2:{s:4:"text";s:11:"Hello world";s:5:"value";i:100;}';
$array = unserialize($string); // 'text' => 'Hello world', 'value' => 100

12

De Implode () Functie retourneert een tekenreeks van de elementen van een array.

<?php
    $arr = array('Hello','World!','Beautiful','Day!');
    echo implode(" ",$arr);
?>

Uitvoer:Hallo wereld! Mooie dag!

<?php
    $arr = array('Hello','World!','Beautiful','Day!');
    echo implode("|",$arr);
?>

Uitvoer:Hallo|Wereld!|Mooie|Dag!


Antwoord 13

Nog een andere manier, PHP var_export()met korte array-syntaxis (vierkante haken) ingesprongen 4 spaties:

function varExport($expression, $return = true) {
    $export = var_export($expression, true);
    $export = preg_replace("/^([ ]*)(.*)/m", '$1$1$2', $export);
    $array = preg_split("/\r\n|\n|\r/", $export);
    $array = preg_replace(["/\s*array\s\($/", "/\)(,)?$/", "/\s=>\s$/"], [null, ']$1', ' => ['], $array);
    $export = join(PHP_EOL, array_filter(["["] + $array));
    if ((bool) $return) return $export; else echo $export;
}

Genomen hier.

Other episodes