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

$type = $_POST[type];

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

Sports|Festivals|Other

当前回答

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

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

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

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

例子:

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

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

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

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

其他回答

如果你有一个数组(比如$_POST),并且需要保存键和值:

function array_to_string($array) {
   foreach ($array as $a=>$b) $c[]=$a.'='.$b;
   return implode(', ',$c);
}

结果是:“名字=保罗,年龄=23,城市=芝加哥”

内爆():

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

然而,Incognito是正确的,您可能不想以这种方式存储它——这完全浪费了数据库的关系功能。

如果执意要序列化,还可以考虑使用json_encode()

这个保存键和值

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

希望它能帮助到别人。

你可以使用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;}

并使用unserialize将字符串转换为数组:

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

$string_array = json_encode($data);

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