我有一个php字符串如下:
$mystr ="f7_r11 f1_r2 f1_r19 f7_r10";
正如你所看到的,有一些id用“f”表示这些是顶层,有些id用“r”表示这些是子级别
我需要将它爆炸到包含唯一顶级(f)的数组包含子级别(r) 完全是这样的:
Array
(
[0] => Array
(
[f_id] => 7
[r_ids] => Array
(
[0] => Array
(
[r_id] => 11
)
[1] => Array
(
[r_id] => 10
)
)
)
[1] => Array
(
[f_id] => 1
[r_ids] => Array
(
[0] => Array
(
[r_id] => 2
)
[1] => Array
(
[r_id] => 19
)
)
)
)
我尝试了一些PHP代码:
$explode = explode(" ", $mystr);
$unique = array_unique($explode);
$array= array_values($unique);
但最终输出不是我想要的!!有谁可以帮助我?
答案 0 :(得分:0)
@Marco Mura @zerkms
我发现自己回答:)
$explode = explode(" ", $array);
$fs=$fs2="";
for($i=0; $i<count($explode); $i++){
$f=strstr($explode[$i], '_', true);
$f = str_replace("f", "", $f);
$fs[].=$f;
}
$fs = array_unique($fs);
$fs= array_values($fs);
for($i=0; $i<count($fs); $i++){
$fs2[$i]['f_id']=$fs[$i];
}
for($i=0; $i<count($explode); $i++){
$r=strstr($explode[$i], '_');
$r = str_replace("_r", "", $r);
$f=strstr($explode[$i], '_', true);
$f = str_replace("f", "", $f);
for($j=0; $j<count($fs); $j++){
if( $f == $fs[$j]){
$fs2[$j]['r_ids'][]=$r;
}
}
}
print_r($fs2);