将PHP数组转换为字符串的最佳方法是什么? 我有变量$type,它是一个类型数组。

$type = $_POST[type];

我想把它作为一个单独的字符串存储在我的数据库中,每个条目由|分隔:

Sports|Festivals|Other

当前回答

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

$string_array = json_encode($data);

现在您可以将这个$string_array值插入到数据库中

其他回答

最好的方法之一:

echo print_r($array, true);

还有另一种方法,PHP var_export()与短数组语法(方括号)缩进4个空格:

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

在这里拍摄的。

使用内爆

implode("|",$type);
json_encode($data) //converts an array to JSON string
json_decode($jsonString) //converts json string to php array

为什么JSON:你可以在大多数编程语言中使用它,由php的serialize()函数创建的字符串仅在php中可读,并且你不喜欢将这些东西存储在你的数据库中,特别是如果数据库在用不同编程语言编写的应用程序之间共享

不,你不想把它作为一个字符串存储在数据库中。

您可以使用serialize(),但这将使您的数据更难搜索,更难处理,并浪费空间。

你也可以做一些其他的编码,但通常也会遇到同样的问题。

你有一个DB的全部原因是你可以完成这样琐碎的工作。你不需要一个表来存储数组,你需要一个可以表示为数组的表。

例子:

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

你可以简单地用SQL从表中选择数据,而不是有一个像这样的表:

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

这不是任何人在关系数据库中设计模式的方式,它完全违背了它的目的。