2012-06-06 2 views
0

나는 db의 객체 배열을 특정 방식으로 저장하는 시스템에서 작업하고 있습니다. 이처럼PHP 배열 직렬화

:

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 

이는 만들어 형식인가? 내가 이것을 unserialize하는 쉬운 방법이 있는지 궁금하네요? - 아마 큰 손실

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

유일한 단점은 데이터의 어떤이있는 경우는 후행 공백을 유지하지 않는다는 것입니다 :

답변

1

글쎄, 당신은 아마 이런 식으로 뭔가를 원하는 것입니다.

+0

죄송합니다. 귀하를 혼란스럽게 생각합니다. 문제의 테이블에는 두 개의 열이 있으며 각 행은 실제로 행입니다. –

1

이것은 데이터베이스 형식을 이해하지 못하는 사람이 작성한 형식입니다.

  1. ID
  2. 이름
  3. 작업 그리고 각 행은 각 person에 대한 데이터로 채워해야

: 당신은 네 개의 열이 persons위한 테이블을 확인해야합니다. 첫 번째 열은 고유 한 ID입니다.

0

나는 조금 이상하게 생각합니다. 데이터베이스에 액세스하는 방법에 따라 다음 내용을 쉽게 조정할 수 있습니다. 가장 간단한 DB 연결 형식을 사용했습니다.

코드 :

Array 
(
    [person_0] => Array 
    (
     [name] => David 
     [age] => 32 
     [job] => Programmer 
    ) 

) 

당신은 어떤 질문이 있으면 알려줘처럼

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

결과는 한마디로 .. 보인다는 스크립트 배열을 만들 수있는 키 필드에 문자열을 수행 키는 사람/값을 기반으로합니다.

즐기기 - sEZ