我有像以下格式的字符串数组
Array(
"Courses",
"Courses/PHP",
"Courses/PHP/Array",
"Courses/PHP/Functions",
"Courses/JAVA",
"Courses/JAVA/String");
我需要结果如下
Courses
- PHP
- Array
- Functions
- JAVA
- Strings
我使用substr选项来获得结果。
for($i=0;$i<count($outArray);$i++)
{
$strp = strrpos($outArray[$i], '/')+1;
$result[] = substr($outArray[$i], $strp);
}
但是我没有像树结构那样获得结果。 如何获得树结构等结果。
答案 0 :(得分:1)
那样的东西?
$a = array(
"Courses",
"Courses/PHP",
"Courses/PHP/Array",
"Courses/PHP/Functions",
"Courses/JAVA",
"Courses/JAVA/String");
$result = array();
foreach($a as $item){
$itemparts = explode("/", $item);
$last = &$result;
for($i=0; $i < count($itemparts); $i++){
$part = $itemparts[$i];
if($i+1 < count($itemparts))
$last = &$last[$part];
else
$last[$part] = array();
}
}
var_dump($result);
结果是:
array(1) {
["Courses"]=>
array(2) {
["PHP"]=>
array(2) {
["Array"]=>
array(0) {
}
["Functions"]=>
array(0) {
}
}
["JAVA"]=>
&array(1) {
["String"]=>
array(0) {
}
}
}
}
答案 1 :(得分:0)
这个怎么样:
<?php
$outArray = Array(
"Courses",
"Courses/PHP",
"Courses/PHP/Array",
"Courses/PHP/Functions",
"Courses/JAVA",
"Courses/JAVA/String");
echo "-" . $outArray[0] . "<br/>";
for($i=0;$i<count($outArray) - 1;$i++)
{
create_tree($outArray[$i],$outArray[$i+1]);
}
function create_tree($prev, $arr)
{
$path1 = explode("/", $prev);
$path2 = explode("/", $arr);
if (count($path1) > count($path2))
echo str_repeat(" ",count($path1) - 1) . "-" . end($path2);
else
echo str_repeat(" ",count($path2) - 1) . "-" . end($path2);
echo $outArray[$i] . "<br/>";
}
输出:
-Courses
-PHP
-Array
-Functions
-JAVA
-Strings