将PHP数组转换为字符串的最佳方法是什么?
我有$type
一个类型数组的变量。
$type = $_POST[type];
我想将其作为单个字符串存储在数据库中,每个条目之间用分隔|
:
体育|节日|其他
将PHP数组转换为字符串的最佳方法是什么?
我有$type
一个类型数组的变量。
$type = $_POST[type];
我想将其作为单个字符串存储在数据库中,每个条目之间用分隔|
:
体育|节日|其他
Answers:
只需使用爆破
implode("|",$type);
$_POST
如果使用数组命名的表单输入,则可能会发生这种情况。
您可以使用json_encode()
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
稍后,只需使用json_decode()从数据库中解码字符串即可。 其他任何东西都没有用,JSON使数组关系保持完整,以备后用!
json_encode($data) //converts an array to JSON string
json_decode($jsonString) //converts json string to php array
为什么使用JSON:您可以将其与大多数编程语言一起使用,由php的serialize()函数创建的字符串仅在PHP中可读,并且您不希望将此类内容存储在数据库中,特别是如果数据库在用编写的应用程序之间共享时不同的编程语言
不,您不想那样将其作为单个字符串存储在数据库中。
您可以使用,serialize()
但这将使您的数据更难搜索,更难以使用并浪费空间。
您也可以进行其他编码,但是通常容易遇到相同的问题。
您拥有数据库的全部原因是您可以轻松完成这样的工作。您不需要表来存储数组,而需要一个可以表示为数组的表。
例:
id | word
1 | Sports
2 | Festivals
3 | Classes
4 | Other
您只需使用SQL从表中选择数据,而不要使用如下表:
id | word
1 | Sports|Festivals|Classes|Other
这不是任何人在关系数据库中设计模式的方式,它完全违背了它的目的。
''
代替\'
?
最好的方法之一:
echo print_r($array, true);
json_decode
弄乱了格式,导致混乱。
<?php
$string = implode('|',$types);
但是,隐身是正确的,您可能不想以这种方式存储它-这完全浪费了数据库的关系能力。
如果您对序列化不满意,也可以考虑使用 陷入僵局 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;
}
希望它可以帮助某人。
$data = array("asdcasdc","35353","asdca353sdc","sadcasdc","sadcasdc","asdcsdcsad");
$string_array = json_encode($data);
现在您可以将此$ string_array值插入数据库
对于商店关联数组,您可以使用serialize
:
$arr = array(
'a' => 1,
'b' => 2,
'c' => 3
);
file_put_contents('stored-array.txt', serialize($arr));
并使用加载unserialize
:
$arr = unserialize(file_get_contents('stored-array.txt'));
print_r($arr);
但是如果需要创建.php
带有数组的动态文件(例如配置文件),则可以使用var_export(..., true);
,如下所示:
保存在文件中:
$arr = array(
'a' => 1,
'b' => 2,
'c' => 3
);
$str = preg_replace('#,(\s+|)\)#', '$1)', var_export($arr, true));
$str = '<?php' . PHP_EOL . 'return ' . $str . ';';
file_put_contents('config.php', $str);
获取数组值:
$arr = include 'config.php';
print_r($arr);
您可以使用PHP字符串函数 implode()
喜欢,
<?php
$sports=$_POST['sports'];;
$festival=$_POST['festival'];
$food=$_POST['food'];
$array=[$sports,$festival,$food];
$string=implode('|',$array);
echo $string;
?>
例如,如果
$sports='football';
$festival='janmastami';
$food='biriyani';
然后输出将是:
football|janmastami|biriyani
有关PHP implode()函数的更多详细信息,请参考w3schools
有很多方法,
两种最佳方法是
$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