2011-09-26 106 views
0

我的数据变量如下:爆炸数据/把它转换为PHP的阵列

canv = 2,3,4,5:::canp = 2,3,4:::canpr = 2,3,4:::canpp = 2,3,4:::all = 2,3,4 

我需要它转变成一个数组看起来应该如下:

$arr = array(
"canv" => array("2", "3", "4", "5"), 
"canp" => array("2", "3", "4"), 
"canpr" => array("2", "3", "4"), 
"canpp" => array("2", "3", "4"), 
"all" => array("2", "3", "4") 
); 

你能帮助我吗?

回答

1
$data = "canv = 2,3,4,5:::canp = 2,3,4:::canpr = 2,3,4:::canpp = 2,3,4:::all = 2,3,4"; 
$result = array(); 
foreach (explode(':::', $data) as $line) { 
    list($part1, $part2) = explode(' = ', $line); 
    $result[$part1] = explode(',', $part2); 
} 
+0

谢谢。但现在,我想读取数组中是否存在该键:if(isset($ result [“canv”] [$ gid]))(其中$ gid是数组中的组ID),但它不工作,因为数组看起来像这样: 'array(“canv”=> array(1 =>“2”,2 =>“3”,3 =>“4”,4 =>“5”); '我需要它看起来像这样: 'array(“canv”=> array(“2”,“3”,“4”,“5”);' 它怎么能完成了吗? – Lucas

+0

'if(isset($ result ['canv'])&& in_array($ gid,$ result ['canv']))' – nachito

+0

'你不能让数组看起来像'array(“2”,“3 “,”4“,”5“),必须有索引。 – nachito

0
$orig_str = 'canv = 2,3,4,5:::canp = 2,3,4:::canpr = 2,3,4:::canpp = 2,3,4:::all = 2,3,4'; 

$parts = explode(':::', $orig_str); 

$data = array() 
foreach($parts as $key => $subparts) { 
    $data[$key] = explode(',', $subparts); 
} 
+1

你忘了按“=”分割 – halfdan

+1

Woops ...正确。嗯,我会把数学教科书的方式拿出来,并说这是作为练习给读者的。 –

0

我会尝试这样的事:这不是测试,尝试的print_r调试

$string = "canv = 2,3,4,5:::canp = 2,3,4:::canpr = 2,3,4:::canpp = 2,3,4:::all = 2,3,4"; 

$pieces = explode(':::',$string); 
$result = array(); 
foreach($pieces AS $piece) 
{ 
    $tmp = explode(' = ',$piece); 
    $result[$tmp[0]] = explode(',',$tmp[1]); 
} 
1

下应该做的伎俩:

$data = "canv = 2,3,4,5:::canp = 2,3,4:::canpr = 2,3,4:::canpp = 2,3,4:::all = 2,3,4"; 
$items = explode(":::", $data); 
$arr = array(); 
foreach($items as $item) { 
    $item = explode(" = ", $item); 
    $arr[$item[0]] = explode(",", $item[1]); 
} 
+0

谢谢。但现在,我想读取数组中是否存在该键:if(isset($ result [“canv”] [$ gid]))(其中$ gid是数组中的组ID),但它不工作,因为数组看起来像这样: 'array(“canv”=> array(1 =>“2”,2 =>“3”,3 =>“4”,4 =>“5”); '我需要它看起来像这样: 'array(“canv”=> array(“2”,“3”,“4”,“5”);' 怎么办? – Lucas