数组来串PHP?

将PHP数组转换为string的最佳方法是什么?
我有variables$type是一个数组types。

 $type = $_POST[type]; 

我想将它作为单个string存储在数据库中,每个条目都用|分隔 :

体育|节日|其他

只需使用implode

 implode("|",$type); 

你可以使用json_encode()

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

稍后使用json_decode()来解码数据库中的string。 其他任何东西都是没用的,JSON保持数组关系不变以备后用!

不,你不想把它作为一个单一的string存储在你的数据库中。

你可以使用serialize()但是这会使你的数据更难search,难以使用,浪费空间。

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

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

例:

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

您只需使用SQL从表中select数据,而不是像下面这样的表:

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

这不是如何在关系数据库中devise一个模式,它完全打败了它的目的。

最好的方法之一:

 echo print_r($array, true); 
 json_encode($data) //converts an array to JSON string json_decode($jsonString) //converts json string to php array 

为什么JSON:你可以在大多数编程语言中使用它,由PHP的serialize()函数创build的string只能在PHP中读取,而且如果在写入的应用程序之间共享数据库,则不希望将这些内容存储在数据库中不同的语言(比如说不同平台的移动应用程序)。

implode() :

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

希望它可以帮助别人。

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

但是,如果需要使用数组创builddynamic.php文件(例如configuration文件),则可以使用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); 

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

有很多方法,

两个最好的方法是

——- 1 ———-

 <?php $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} <?php $b = array ('m' => 'monkey', 'foo' => 'bar', 'x' => array ('x', 'y', 'z')); $results = print_r($b, true); // $results now contains output from print_r ?>