【问题标题】:PHP - Convert values of array A to an index of array BPHP - 将数组 A 的值转换为数组 B 的索引
【发布时间】:2015-11-16 01:29:00
【问题描述】:

有一个数组 A,它有可变数量的值。 我想将数组 A 的值转换为数组 B 的索引。

语言:PHP

例子:

//array A
$a={'a','b','c','d'};

//converted to an index of array B
$b['a']['b']['c']['d']='somevalue';

问题是数组A的值个数是灵活的。

有出路吗?谢谢。

【问题讨论】:

    标签: php arrays indexing


    【解决方案1】:
    $a=['a','b','c','d'];
    
    $b = [];
    $c = &$b;
    foreach($a as $key) {
        $c[$key] = $c;
        $c = &$c[$key];
    }
    $c = 'somevalue';
    unset($c);
    
    var_dump($b);
    

    Demo

    【讨论】:

    • 感谢您这么快的回答。我测试了这段代码,得到了一个意想不到的结果:array(1) { ["a"]=> array(2) { ["a"]=> array(1) { ["a"]=> RECURSION } ["b"]=> array(3) { ["a"]=> array(1) { ["a"]=> RECURSION } ["b"] => array(2) { ["a"]=> array(1) { ["a"]=> RECURSION } ["b"]=> RECURSION } ["c"]=> .........
    【解决方案2】:

    感谢@Mark Ba​​ker。我修改了一些代码,它可以工作了。

    $a = array('a', 'b', 'c', 'd');
    
    $b = array();
    
    rsort($a);
    
    $i = 0;
    foreach ($a as $v)
    {
        if ($i++ > 0)
        {
            $c = array();
            $c[$v] = $b;
            $b = $c;
        }
        else
        {
            $b[$v] = 111;
        }
    }
    
    var_dump($b);
    

    结果,正是我想要的:

    array(1) {
      ["a"]=>
      array(1) {
        ["b"]=>
        array(1) {
          ["c"]=>
          array(1) {
            ["d"]=>
            int(111)
          }
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-23
      相关资源
      最近更新 更多