将PHP数组转换为字符串的最佳方法是什么? 我有变量$type,它是一个类型数组。
$type = $_POST[type];
我想把它作为一个单独的字符串存储在我的数据库中,每个条目由|分隔:
Sports|Festivals|Other
将PHP数组转换为字符串的最佳方法是什么? 我有变量$type,它是一个类型数组。
$type = $_POST[type];
我想把它作为一个单独的字符串存储在我的数据库中,每个条目由|分隔:
Sports|Festivals|Other
当前回答
有很多方法,
最好的两种方法是
$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
其他回答
最好的方法之一:
echo print_r($array, true);
内爆():
<?php
$string = implode('|',$types);
然而,Incognito是正确的,您可能不想以这种方式存储它——这完全浪费了数据库的关系功能。
如果执意要序列化,还可以考虑使用json_encode()
不,你不想把它作为一个字符串存储在数据库中。
您可以使用serialize(),但这将使您的数据更难搜索,更难处理,并浪费空间。
你也可以做一些其他的编码,但通常也会遇到同样的问题。
你有一个DB的全部原因是你可以完成这样琐碎的工作。你不需要一个表来存储数组,你需要一个可以表示为数组的表。
例子:
id | word
1 | Sports
2 | Festivals
3 | Classes
4 | Other
你可以简单地用SQL从表中选择数据,而不是有一个像这样的表:
id | word
1 | Sports|Festivals|Classes|Other
这不是任何人在关系数据库中设计模式的方式,它完全违背了它的目的。
还有另一种方法,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;
}
在这里拍摄的。
你可以使用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