如何循环隐藏的字段项并使用PHP放入Session

时间:2010-10-27 16:47:49

标签: php

我有隐藏字段,其中包含此格式的值 ENO:123,EQNO:231,LOC:芝加哥,ENO:567,EQNO:898,LOC:佛罗里达;

在上面的行中,iam有两对以“;”分隔的记录 并且对于每个记录,我有三列用“:”分隔 现在我如何循环并将每列放入会话

3 个答案:

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

)