逗号分隔字符串到父子关系数组php

时间:2015-09-02 10:12:19

标签: php

我有一个逗号分隔的字符串,如

$str = "word1,word2,word3";

我想从中创建一个父子关系数组。 这是一个例子:

enter image description here

4 个答案:

答案 0 :(得分:2)

尝试将自己的功能简单化为

$str = "word1,word2,word3";
$res = [];

function makeNested($arr) {
    if(count($arr)<2)
        return $arr;
    $key = array_shift($arr);
    return array($key => makeNested($arr));
}

print_r(makeNested(explode(',', $str)));

Demo

答案 1 :(得分:0)

function tooLazyToCode($string)
{
    $structure = null;
    foreach (array_reverse(explode(',', $string)) as $part) {
        $structure = ($structure == null) ? $part : array($part => $structure);
    }

    return $structure;
}

答案 2 :(得分:0)

请检查以下代码,它将占用上述答案的一半时间:

<?php
$str = "sports,cricket,football,hockey,tennis";
$arr = explode(',', $str);
$result = array();
$arr_len = count($arr) - 1;
$prev = $arr_len;
for($i = $arr_len; $i>=0;$i--){
    if($prev != $i){
        $result = array($arr[$i] => $result);
    } else {
        $result = array ($arr[$i]);
    }
    $prev = $i;
}
echo '<pre>',print_r($result),'</pre>';

答案 3 :(得分:0)

这是另一个代码,它会根据您的要求给出结果:

<?php
$str = "sports,cricket,football,hockey,tennis";
$arr = explode(',', $str);
$result = array();
$arr_len = count($arr) - 1;
$prev = $arr_len;
for($i = $arr_len; $i>=0;$i--){
    if($prev != $i){
        if($i == 0){
            $result = array($arr[$i] => $result);
        }else{
            $result = array(array($arr[$i] => $result));
        }

    } else {
        $result = array ($arr[$i]);
    }
    $prev = $i;
}
echo '<pre>',print_r($result),'</pre>';