我有隐藏字段,其中包含此格式的值 ENO:123,EQNO:231,LOC:芝加哥,ENO:567,EQNO:898,LOC:佛罗里达;
在上面的行中,iam有两对以“;”分隔的记录 并且对于每个记录,我有三列用“:”分隔 现在我如何循环并将每列放入会话
答案 0 :(得分:1)
易。你必须用“;”分割字符串,然后再用“,”分割。您可以使用拆分或爆炸。
// Sample code:
$foo = "ENO:123,EQNO:231,loc:CHICAGO;ENO:567,EQNO:898,loc:FLORIDA;";
$arr = split(";", $foo);
$column1 = split(",", $arr[0]);
$column2 = split(",", $arr[1]);
// loop
foreach($column1 as $col){
// do something
}
答案 1 :(得分:0)
$columns = array();
foreach (explode(',', $_POST['whatever']) as $record) {
list($key, $value) = explode(':', $record);
$columns[] = $value;
}
}
已编辑以回应德比的评论。 (还将分隔符从'。'更正为':')
答案 2 :(得分:0)
如果您只对一个评论中所述的值感兴趣,可以尝试此功能(在PHP 5.2下测试):
<?php
header('Content-Type: text/plain');
$str = 'ENO:123,EQNO:231,loc:CHICAGO;ENO:567,EQNO:898,loc:FLORIDA;';
function parseStrToSets(&$out, $str, array $separators, $idx = 0)
{
$chunks = explode($separators[$idx], trim($str, $separators[$idx]));
if(!isset($separators[$idx + 1])) return $out = $chunks[1];
foreach($chunks as $key => $chunk)
parseStrToSets($out[$key], $chunk, $separators, $idx + 1);
}
$out = array();
parseStrToSets($out, $str, array(';', ',', ':'));
print_r($out);
给出:
Array
(
[0] => Array
(
[0] => 123
[1] => 231
[2] => CHICAGO
)
[1] => Array
(
[0] => 567
[1] => 898
[2] => FLORIDA
)
)