3v4l.org

run code in 300+ PHP versions simultaneously
<?php $data = [ ['アーチ橋', 'アーチの過重負担方法による分類', '無補剛アーチ', '固定アーチ'], ['アーチ橋', 'アーチの過重負担方法による分類', '無補剛アーチ', '2ヒンジアーチ'], ['アーチ橋', 'アーチの過重負担方法による分類', '補剛アーチ', 'ランガー', 'ランガー'], ['アーチ橋', 'アーチの過重負担方法による分類', '補剛アーチ', 'ランガー', 'トラストランガー'], ['アーチ橋', 'アーチの過重負担方法による分類', '補剛アーチ', 'ローゼ', 'ローゼ'], ['アーチ橋', 'アーチの過重負担方法による分類', '補剛アーチ', 'ローゼ', '逆ローゼ'], ['アーチ橋', 'アーチ部材の形態による分類', 'ソリッドリブアーチ'], ['アーチ橋', 'アーチ部材の形態による分類', 'パイプアーチ'], ['トラス橋', 'トラスの支持方法による分類', '単純トラス'], ['トラス橋', 'トラスの支持方法による分類', '連続トラス'], ['トラス橋', 'トラスの形状による分類', '平行弦トラス'], ['トラス橋', 'トラスの形状による分類', '曲弦トラス'], ]; $result = []; foreach ($data as $row) { $value = \end($row); $key = \key($row); unset($row[$key]); $keys = $row; $tmp = &$result; foreach ($keys as $key) { if (!isset($tmp[$key])) { $tmp[$key] = null; } $tmp = &$tmp[$key]; } if ($tmp === null) { $tmp = $value; } elseif (!\is_array($tmp)) { $tmp = [$tmp, $value]; } else { $tmp[] = $value; } } echo \json_encode($result, \JSON_PRETTY_PRINT|\JSON_UNESCAPED_UNICODE);
Output for 8.1.23 - 8.1.33, 8.2.7 - 8.2.29, 8.3.0 - 8.3.28, 8.4.1 - 8.4.14, 8.5.0
{ "アーチ橋": { "アーチの過重負担方法による分類": { "無補剛アーチ": [ "固定アーチ", "2ヒンジアーチ" ], "補剛アーチ": { "ランガー": [ "ランガー", "トラストランガー" ], "ローゼ": [ "ローゼ", "逆ローゼ" ] } }, "アーチ部材の形態による分類": [ "ソリッドリブアーチ", "パイプアーチ" ] }, "トラス橋": { "トラスの支持方法による分類": [ "単純トラス", "連続トラス" ], "トラスの形状による分類": [ "平行弦トラス", "曲弦トラス" ] } }
Output for 8.4.15
/bin/php-8.4.15: /usr/lib/libm.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libm.so.6: version `GLIBC_2.35' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libc.so.6: version `GLIBC_2.34' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libc.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.4.15)
Process exited with code 1.

preferences:
54.62 ms | 408 KiB | 5 Q