it-swarm.cn

数组到字符串PHP?

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

$type = $_POST[type];

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

体育|节日|其他

226
Philip Kirkbride

只需使用 implode

implode("|",$type);
284
Niet the Dark Absol

你可以使用 json_encode()

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

echo json_encode($arr);
?>

稍后只需使用 json_decode() 解码数据库中的字符串。 其他任何东西都没用,JSON保持数组关系完整无缺,以备日后使用!

189
Jakub

不,您不希望将其作为单个字符串存储在数据库中。

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

你也可以做一些其他的编码,但它通常容易出现同样的问题。

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

例:

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

您只需使用SQL从表中选择数据,而不是具有如下所示的表:

id | Word
1  | Sports|Festivals|Classes|Other

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

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

为什么JSON:您可以将它与大多数编程语言一起使用,php的serialize()函数创建的字符串只能在PHP中读取,并且您不希望在数据库中特别存储这些内容在用不同编程语言编写的应用程序之间共享

33
sumit

最好的方式之一:

echo print_r($array, true);
28
vvkatwss vvkatwss

implode()

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

但是,Incognito是对的,您可能不希望以这种方式存储它 - 这完全浪费了数据库的关系能力。

如果你在序列化时死定,你也可以考虑使用 json_encode()

11
timdev

这个节省了KEYS和VALUES

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

希望它可以帮助某人。

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

$string_array = json_encode($data);

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

4
Akbar Mirsidikov

对于商店关联数组,您可以使用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);

但是如果需要使用数组创建dinamic .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);
4
Guilherme Nascimento

你可以使用PHP string函数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

3
user8140418