2010年3月6日 星期六

PHP Function 文字與陣列轉換,資料庫好用喔(可多層)

這個程式主要就是可以把陣列 和文字 互相轉換
在資料庫要新增欄位算是比較麻煩的事情,而且如果欄位和值的數量不固定
資料庫就很難作用
因此寫了這個程式(初步構想),只要在資料庫欄位中,新增一個TEXT 欄位即可
大家可以試試看,本人是覺得還蠻方便的
=========================================
後來發現 其實就是JSON 的觀念
=========================================

<?php

$text = "e:{ee:{eee:55},e2:555},a:1,b:{ba:1},c:2,d:{dd:4,da:5}";

$text2 ='aa,bb,cc,dd';

$a = text2array($text);

$a = array2text($a);

var_dump($a);//string(53) "e:{ee:{eee:55},e2:555},a:1,b:{ba:1},c:2,d:{dd:4,da:5}"

function text2array($text){

$return = array();

while($text){

$tay = explode(":",$text,2);

$l=0;$i= (-1);

while($i<strlen($tay[1])){

$i++;

if($tay[1][$i]=="{"){

$l++;

}elseif($tay[1][$i]=="}"){

$l--;

}

//if()

if($l==0){

break;

}

}

if($i==0){

$tb = explode(",",$tay[1],2);

$return[$tay[0]] = $tb[0];

if(isset($tb[1]))

$text = $tb[1];

else

$text = false;

}else{

$return[$tay[0]] = text2array(substr($tay[1],1,($i-1)));

$text = substr($tay[1],($i+2));

}

}

return $return;

}

function array2text($array){

$return = '';

if(is_array($array)){

foreach($array as $field=>$content){

if(is_array($content)){

$return = $return.$field.":{".array2text($content)."}";

}else{

$return = $return.$field.":".$content;

}

$return .= ",";

}

$return = substr($return,0,-1);

}else{

$return = $array;

}

return $return;

}

?>