通过使用数组作为条件的substr

时间:2011-06-03 10:55:52

标签: php arrays

我有一个包含文字的文件

ABBCDE1990-12-10JOBALPHABETabbcde1990-12-10jobalphabet


$field = array(
   "fullname" => array("length"=5,"mandat"=>True),
   "bithday" => array("length"=>10,"mandat"=>True)
   "job" => array("length"=>3,"mandat"=>True),
   "desc" => array("length"=>8,"mandat"=>false)      
);

如何让阵列得到这样的东西:

$output = array(
    //ABBCDE1990-12-10JOBALPHABET
      0=>array(   
            "fullname" => "ABBCDE"
            "bithday" => 1990-12-10
            "job" =>  "JOB"
            "desc"=>  "ALPHABET"

        )
     //abbcde1990-12-10jobalphabet
       1=>array(   
            "fullname" => "abbcde"
            "bithday" => 1990-12-10
            "job" =>  "job"
            "desc"=>  "alphabet"

        )
    );

我正在努力建立一个功能

function toOutput($str,$filed){
  $per_line = 27;//len of abbcde1990-12-10jobalphabet
  $pos = 0;
  while ($pos<strlen($str)){
    $pos +=  27;
    //
  }


}

1 个答案:

答案 0 :(得分:1)

$field = array(
   "fullname" => array("length"=>6,"mandat"=>True),
   "bithday" => array("length"=>10,"mandat"=>True),
   "job" => array("length"=>3,"mandat"=>True),
   "desc" => array("length"=>8,"mandat"=>false)      
);

$string = 'ABBCDE1990-12-10JOBALPHABETabbcde1990-12-10jobalphabet';

$result = array();

$countString = strlen($string)/27;
$oldPos = 0;
for($i=0;$i<$countString;$i++) {
  foreach($field as $k=>$v) {
    $result[$i][$k] = substr($string,$oldPos,$v['length']);
    $oldPos += $v['length'];
  }
}

print_r($result);

您可以在此处查看并运行:http://codepad.org/CEQNIPCg(版本0.3)

基于此,您可以创建一个功能,以便将所有$string传递给您