PHP数组序列化
我正在开发一个系统,它以某种方式将对象数组存储在数据库中 像这样:PHP数组序列化,php,database,arrays,serialization,Php,Database,Arrays,Serialization,我正在开发一个系统,它以某种方式将对象数组存储在数据库中 像这样: key | value ------------------------------ person_0_name | David person_0_age | 32 person_0_job | Programmer person_1_name | Sue person_1_age | 26 person_1_job | Teacher person_2_name |
key | value
------------------------------
person_0_name | David
person_0_age | 32
person_0_job | Programmer
person_1_name | Sue
person_1_age | 26
person_1_job | Teacher
person_2_name | Jon
person_2_age | 40
person_2_job | Bus Driver
这是虚构的格式吗?我想知道是否有一种简单的方法可以解除这一限制?嗯,您可能会想要这样的东西:
$lines = explode("\n",$data);
$keys = array_shift($lines);
array_shift($lines); // discard the line of dashes
$keylist = Array();
foreach(explode("|",$keys) as $k) {
$keylist[] = trim($k);
}
$out = Array();
foreach($lines as $line) {
foreach(explode("|",$line) as $i=>$l) {
$out[$keylist[$i]] = trim($l);
}
}
// var_dump($out);
唯一的缺点是,如果数据中有尾随空格,它就不会保留尾随空格,这可能不是一个巨大的损失。这是一种虚构的格式,显然是由不了解deatabase设计的人完成的。您需要为
人员
创建一个包含四列的表格:
然后,应使用每个
人员的数据填充每一行。第一列是唯一的ID。我认为上面的内容有点凸。根据访问数据库的方式,可以轻松调整以下内容。我使用了最简单的DB连接形式
守则:
<?php
$m = mysql_connect('localhost', 'root', 'stack');
mysql_select_db('stack');
$q = mysql_query('SELECT * FROM example');
$arr = array();
while($row = mysql_fetch_assoc($q)){
$arr[substr($row['key'],0, 8)][substr($row['key'],9)] = $row['value'];
print_r($arr);
}
如果你有任何问题,请告诉我。。简而言之,脚本在key字段上执行一个子字符串,以基于person/value创建数组键
享受经济特区对不起,我想我把你弄糊涂了。问题中的表格有两列,每行实际上是一行。
Array
(
[person_0] => Array
(
[name] => David
[age] => 32
[job] => Programmer
)
)