2012-07-15 29 views

回答

0

你需要新的数组存储在变量>

$arr = explode(',',$string); 

,我没有得到你想要的第二部分(|后)做什么,而是你可以得到通过这样做,第一比肩>$half = explode('|',$string)[0];

2
foreach(explode('|', $str) as $v){ 
    $data = explode(',',$v); 
    echo '$email = '.$data[0]. 
    '$score = '.$data[1]. 
    '$street = '.$data[2]. 
    '$rank = '.$data[3]; 
} 
+0

让我试试吧,先生非常感谢你。 – user1506189 2012-07-15 17:36:47

+1

对于一个已知的/不变的/少量的数据块,它会更干净,更不容易出错['list()'](http://php.net/manual/en/function.list.php) (例如'list($ email,$ score,$ street,$ rank)= explode(',',$ v);') – FtDRbwLXw6 2012-07-15 20:33:19

0

你需要解开它的正确顺序:

  • 首块通过|

  • 通过,

一个简洁的方式这样做分离,然后单个细胞分离是:

$array = array_map("str_getcsv", explode("|", $data)); 

会给你一个2D阵列。

0

使用strtok并爆炸。

$tok = strtok($string, "|"); 

while ($tok !== false) { 
    list($email, $score, $street, $rank) = explode(',', $tok); 
    $tok = strtok(","); 
} 
1
$arr = preg_split('"[,|]"', '[email protected],123,12,1|[email protected],321,32,2'); 
$len = count($arr); 
for($i = 0; $i < $len; $i+=4) { 
    $email = $arr[$i]; 
    $score = $arr[$i+1]; 
    $street = $arr[$i+2]; 
    $rank = $arr[$i+3]; 
} 
+0

我怎样才能在没有数组的情况下打印? – user1506189 2012-07-15 17:44:53

0

我想你想要的是像这样

$output = array(); 

foreach (explode('|', $string) as $person) { 
    $output[] = array(
     'email' => $person[0], 
     'score' => $person[1], 
     'street' => $person[2], 
     'rank' => $person[3] 
    ) 
} 

这存储在一个多维数组的所有结果。例如,要打印1人的电子邮件,你会使用

echo $output[0]['email']; // [email protected] 

和访问人2的大街上,你会使用

echo $output[1]['street']; // 32