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

qq697553 2018-04-12 06:39:23
字符串: 111,aaa|222,bbb|333,ccc (111后面是逗号)

怎么分隔成输出下面这种数组了? 还有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)
...全文
414 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq697553 2018-04-12
  • 打赏
  • 举报
回复
引用 7 楼 dzyweer 的回复:
这个就实现了你查找id的需求 接着代码来就行
function stt(){
         $str = '111,aaa|222,bbb|333,ccc';
         //目标数组初始化
         $des_arr = '';
         //按直杠进行规划成数组
         $out_arr = explode('|',$str);
         //通过重组变成目标数组
         foreach ($out_arr as $key1 =>$oastr)
         {
             //进行拆分
             $inner_arr = explode(',',$oastr);
             //更换每个子数组的key
             $des_arr[$key1]['id'] = $inner_arr[0];
             $des_arr[$key1]['name'] = $inner_arr[1];
         }

         foreach ($des_arr as $fii)
         {
             //遍历子数组
             if($fii['name']=='bbb')
             {
                 //找到了id立刻返回出去。
                 echo $fii['id'];
                 break;
             }

         }
    }
已经自行解决了,不过还是谢谢您的热心回答
董哥007 2018-04-12
  • 打赏
  • 举报
回复
这个就实现了你查找id的需求 接着代码来就行
function stt(){
         $str = '111,aaa|222,bbb|333,ccc';
         //目标数组初始化
         $des_arr = '';
         //按直杠进行规划成数组
         $out_arr = explode('|',$str);
         //通过重组变成目标数组
         foreach ($out_arr as $key1 =>$oastr)
         {
             //进行拆分
             $inner_arr = explode(',',$oastr);
             //更换每个子数组的key
             $des_arr[$key1]['id'] = $inner_arr[0];
             $des_arr[$key1]['name'] = $inner_arr[1];
         }

         foreach ($des_arr as $fii)
         {
             //遍历子数组
             if($fii['name']=='bbb')
             {
                 //找到了id立刻返回出去。
                 echo $fii['id'];
                 break;
             }

         }
    }
董哥007 2018-04-12
  • 打赏
  • 举报
回复
function stt(){
         $str = '111,aaa|222,bbb|333,ccc';
         //目标数组初始化
         $des_arr = '';
         //按直杠进行规划成数组
         $out_arr = explode('|',$str);
         //通过重组变成目标数组
         foreach ($out_arr as $key1 =>$oastr)
         {
             //进行拆分
             $inner_arr = explode(',',$oastr);
             //更换每个子数组的key
             $des_arr[$key1]['id'] = $inner_arr[0];
             $des_arr[$key1]['name'] = $inner_arr[1];
         }

         var_export($des_arr);
    }
qq697553 2018-04-12
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
$s = '111,aaa|222,bbb|333,ccc';
$k = ['id', 'name'];
foreach(explode('|', $s) as $v) {
  $res[] = array_combine($k, explode(',', $v));
}
var_export($res);

array (
  0 => 
  array (
    'id' => '111',
    'name' => 'aaa',
  ),
  1 => 
  array (
    'id' => '222',
    'name' => 'bbb',
  ),
  2 => 
  array (
    'id' => '333',
    'name' => 'ccc',
  ),
)
版主太牛X了,问题解决了。三克油 版主还有个问题 根据上面数组的输出 已知name值bbb 怎么获取他的ID值?
Zerolone 2018-04-12
  • 打赏
  • 举报
回复
个人觉得,你做版主应该是给渔,而不是给鱼。
xuzuning 2018-04-12
  • 打赏
  • 举报
回复
$s = '111,aaa|222,bbb|333,ccc';
$k = ['id', 'name'];
foreach(explode('|', $s) as $v) {
  $res[] = array_combine($k, explode(',', $v));
}
var_export($res);

array (
  0 => 
  array (
    'id' => '111',
    'name' => 'aaa',
  ),
  1 => 
  array (
    'id' => '222',
    'name' => 'bbb',
  ),
  2 => 
  array (
    'id' => '333',
    'name' => 'ccc',
  ),
)
qq697553 2018-04-12
  • 打赏
  • 举报
回复
引用 1 楼 zerolone 的回复:
用explode切2次就可以了。
不会切,还有要改键名 不然我还不会调用
Zerolone 2018-04-12
  • 打赏
  • 举报
回复
用explode切2次就可以了。

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧