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
        )
    
    )