$a = Array("one", "two", "three");
$b = "text"
上記の配列を次のようなものに変換しようとしています。
$a = Array("one" => Array("two" => Array("three" => "text")));
私は即興せずにそれを行う方法を探していますが、これまでのところ運がなく、グーグルは私が探しているもの以外はすべて見つかったようです。
再帰を使用する
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);
$i=count($array)-1;
$b=array();
$a=$array[$i];
while($i>0) {
$b=array($array[$i-1]=>$a);
$a=$b;
$i--;
}
var_dump($a);