0
$a = Array("one", "two", "three");
$b = "text"

上記の配列を次のようなものに変換しようとしています。

$a = Array("one" => Array("two" => Array("three" => "text")));

私は即興せずにそれを行う方法を探していますが、これまでのところ運がなく、グーグルは私が探しているもの以外はすべて見つかったようです。

4

2 に答える 2

2

再帰を使用する

function make(array $array, $value) {
    $first = array_shift($array);

    if (count($array) === 0) {
        return array($first => $value);
    } else {
        return array($first => make($array, $value);
    }
}

配列の最初の項目を取り、 に配置し$firstます。に配置する$firstと、 から削除され$arrayます。次に、配列に項目が残っているかどうかを確認します。そうであればループを継続し、それ以外の場合はループを終了します。

それがあなたのために働くことを願っています

したがって、次のように呼び出すことができます。

$a = Array("one", "two", "three");
$b = "text";

$array = make($a, $b);
于 2013-05-26T12:47:42.567 に答える
0
$i=count($array)-1;
$b=array();
$a=$array[$i];
while($i>0) {
  $b=array($array[$i-1]=>$a);
  $a=$b;
  $i--;
}

var_dump($a);
于 2013-05-27T10:35:33.263 に答える