如何将这样一个一维数组转换成下面的二维数组

一维数组是这样的根据gbe3和gbe4进行分割数组,变成这样的一个二维数组需要具体的PHP代码以上的数组为$arr=array("0"=>"gbe3:","1"=>"lo... 一维数组是这样的

根据gbe3和gbe4进行分割数组,变成这样的一个二维数组
需要具体的PHP代码 以上的数组为
$arr=array(
"0" => "gbe3:",
"1"=>"local: 192.168.1.186",
"2"=> "server:",
"3"=>"0 -- 192.168.1.125",
"4"=> "gbe4:",
"5"=>"local: 192.168.1.11",
"6"=>"server:",
"7"=> "0 -- 192.168.1.111",
"8"=> "1 -- 192.168.1.15"
);
展开
 我来答
juzelong630
推荐于2016-04-24 · TA获得超过428个赞
知道小有建树答主
回答量:251
采纳率:0%
帮助的人:159万
展开全部
$arr=array(
   "0" =>  "gbe3:",
   "1"=>"local: 192.168.1.186",
   "2"=> "server:",
   "3"=>"0 -- 192.168.1.125",
   "4"=> "gbe4:",
   "5"=>"local: 192.168.1.11",
   "6"=>"server:",
   "7"=> "0 -- 192.168.1.111",
   "8"=> "1 -- 192.168.1.15",
   "9"=> "gbe5:",
   "10"=>"local: 192.168.1.12",
   "11"=>"server:",
   "12"=> "0 -- 192.168.1.12",
   "13"=> "1 -- 192.168.1.13",
   "14"=> "1 -- 192.168.1.15"
);




$c = 0;
$array_s = array();
$array_c = array();
foreach($arr as $key => $val){
    if(substr($val,0,3) == "gbe"){
        if(!empty($array_c))
            $array_s[] = $array_c;
        $array_c = array();
        $ress = explode(':',$val);
        $array_c['name'] = $ress[0];
    }
    elseif(substr($val,0,5) == 'local'){
        $array_c['local'] = substr($val,7,strlen($val));
    }
    
    elseif(strpos($val,"--")){        
        $rs = explode('-- ',$val);
        if(isset($array_c['server']) && $array_c['server'] != ''){
            $array_c['server'] .= ",".$rs[1];
        }
        else{
            $array_c['server'] = $rs[1];
        }
    }
    if($key == count($arr) - 1){
        $array_s[] = $array_c;
    }
}
var_dump($array_s);

只要是按照规律来的 按这个方法肯定可以实现你所要的结构,不管扩展到多少都可以完成~

夐小栩
2013-10-09 · TA获得超过197个赞
知道小有建树答主
回答量:136
采纳率:66%
帮助的人:69.7万
展开全部
很容易
给你个提示array_chunk,嗯哼
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百krfh
2013-10-09 · TA获得超过160个赞
知道小有建树答主
回答量:199
采纳率:0%
帮助的人:173万
展开全部
$i=0;
$j=0;
$arr1='';
foreach($arr as $k=>$v)
{
if($v=='gbe3' || $v=="gbe4")
{$i=0;$j++;}
if($i==2)
{
$v=preg_replace('/\d+\-+/','',$v);
$arr1[$j-1]['server']=$v;
}
if($i==0)
{

$arr1[$j-1]['name']=$v;
}
if($i==1)
{

$arr1[$j-1]['local']=$v;
}

$i++;
}
print_r($arr1);
直接输入的没做测试,只是提供一个思路,因为数据是有规律的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式