Сделать функцию универсальной [closed]

Как сделать универсальную версию моей функции с неограниченным количеством «ключей». См. Функцию ниже. Это макет другой функции, которую я хочу использовать. Но я застрял. я использовал switch просто чтобы жестко закодировать фактический результат, который мне нужен. Так что это просто для иллюстрации проблемы. Простите друзья, я не лучший программист 🙂

<?php

function get_definition( $literal_key = 'k0.k1.k2', $val="value", $literal_sep = '.' )
{
    $keys = explode( $literal_sep, $literal_key ); // ['k0', 'k1', 'k2']
    
    switch ( count( $keys ) )
    {
        case 1:
            return [ $keys[ 0 ] => $val ];                                     // Array ( [k0] => {val} )
        case 2:
            return [ $keys[ 0 ] => [ $keys[ 1 ] => $val ] ];                   // Array ( [k0] => Array ( [k1] => {val} ) )
        case 3:
            return [ $keys[ 0 ] => [ $keys[ 1 ] => [ $keys[ 2 ] => $val ] ] ]; // Array ( [k0] => Array ( [k1] => Array ( [k2] => {val} ) ) )
    }
}

print_r( get_definition() ); // Array ( [k0] => Array ( [k1] => Array ( [k2] => value ) ) )

print_r( get_definition( 'key.subkey' ) ); // Array ( [key] => Array ( [subkey] => value ) )

print_r( get_definition( 'single_key', 'custom_value' ) ); // Array ( [single_key] => custom_value )

print_r( get_definition( '0.1.2.3.4' ) ); // too much keys

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *