PHP怎么分割字符串 输出二维数组

字符串:111,aaa|222,bbb|333,ccc怎么分隔成输出下面这种数组了?还有111键名也改成idaaa键名改成namearray(size=3)0=>arra... 字符串: 111,aaa|222,bbb|333,ccc

怎么分隔成输出下面这种数组了? 还有111键名也改成id aaa键名改成name

array (size=3)
0 =>
array (size=2)
id => string '111' (length=3)
name => string 'aaa' (length=3)
1 =>
array (size=2)
id => string '222' (length=3)
name => string 'bbb' (length=3)
2 =>
array (size=2)
id => string '333' (length=3)
name => string 'ccc' (length=3)
展开
 我来答
datouxiaoxu
2018-04-12 · TA获得超过1262个赞
知道小有建树答主
回答量:1022
采纳率:83%
帮助的人:483万
展开全部

巧妙运用explode()这个方法即可,根据你的需求写了段代码

$result = array();
$str = '111,aaa|222,bbb|333,ccc';
// 第一次分割字符串
$arr1 = explode('|', $str);
foreach ($arr1 as $key => $value) {
        // 第二次分割字符串
$arr2 = explode(',', $value);
$result[$key]['id'] = $arr2[0];
$result[$key]['name'] = $arr2[1];
}
var_dump($result);

数组打印效果如下图

希望能帮助到你,注意采纳

senfe99
2018-04-12 · 超过58用户采纳过TA的回答
知道小有建树答主
回答量:119
采纳率:76%
帮助的人:42.6万
展开全部

方法一:用正则

<?php
$str = '111,aaa|222,bbb|333,ccc';
$arr = array();
preg_match_all('/(\d+),(\w+)\|?/s', $str, $matches);
if(!empty($matches[1])){
foreach($matches[1] as $k => $v){
$arr[] = array(
'id' => $v,
'name' =>  $matches[2][$k]
);
}
}
var_dump($arr);

方法二:用explode分隔字符串

<?php
$str = '111,aaa|222,bbb|333,ccc';
$arr = array();
$a1 = explode('|', $str);
foreach($a1 as $v){
$a2 =  explode(',', $v);
if(count($a2)>1){
$arr[] = array(
'id' => $a2[0],
'name' =>  $a2[1]
);
}
}
var_dump($arr);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式