我怎么能爆炸呢? mars@email.com,123,12,1|art@hur.com,321,32,2
输出应为:
$email = mars@email.com
$score = 123
$street = 12
$rank = 1
然后删除|
$email = art@hur.com
$score = 321
$street = 32
$rank = 2
$string = mars@email.com,123,12,1|art@hur.com,321,32,2
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];
}
答案 1 :(得分:1)
您可能希望使用strtok()而不是explode()。
答案 2 :(得分:1)
$arr = preg_split( '"[,|]"', 'mars@email.com,123,12,1|art@hur.com,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];
}
答案 3 :(得分:0)
您需要将新数组存储在变量&gt;
中$arr = explode(',',$string);
我不知道你想要用第二部分做什么(在|
之后),但你可以通过这样做得到第一个标准&gt; $half = explode('|',$string)[0];
答案 4 :(得分:0)
您需要按正确的顺序解开它:
首先由|
然后将单个单元格分隔为,
这样做的简明方法是:
$array = array_map("str_getcsv", explode("|", $data));
会给你一个2D数组。
答案 5 :(得分:0)
使用strtok并爆炸。
$tok = strtok($string, "|");
while ($tok !== false) {
list($email, $score, $street, $rank) = explode(',', $tok);
$tok = strtok(",");
}
答案 6 :(得分: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']; // mars@email.com
并访问人2的街道,你会使用
echo $output[1]['street']; // 32