如何将这样一个一维数组转换成下面的二维数组
一维数组是这样的根据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"
); 展开
根据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"
); 展开
3个回答
展开全部
$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);
只要是按照规律来的 按这个方法肯定可以实现你所要的结构,不管扩展到多少都可以完成~
展开全部
很容易
给你个提示array_chunk,嗯哼
给你个提示array_chunk,嗯哼
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
$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);
直接输入的没做测试,只是提供一个思路,因为数据是有规律的
$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);
直接输入的没做测试,只是提供一个思路,因为数据是有规律的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询