Добавил немного индусской оптимизации. Время выполнения хинди-кода сократилось на 25%. На 10к проходов упало с 2 сек. до 1.5 сек. Что, в прочем, все равно ни разу не конкурирует с 0.3 сек. у не индусского кода. PHP: function getElementByPath($array, $path) { $shame = false; $wow_such_result = [$path, &$shame]; $fucking_madness = json_encode($array); $fucking_madness = str_replace('":{"', '.', $fucking_madness); $fucking_madness_so_madness = explode(',', $fucking_madness); array_walk($fucking_madness_so_madness, function ($shit, $shitted_key, $ohmygod) { if (substr($shit,2,strpos($ohmygod[0],'.')) === substr($ohmygod[0],0,strpos($ohmygod[0],'.'))) { $shit = str_replace(['"', '{', '}'], '', $shit); $holy_shit = explode(':', $shit); if ($holy_shit[0] === $ohmygod[0]) { $ohmygod[1] = $holy_shit[1]; } } }, $wow_such_result); return $shame; } Автор, а чего добился ты?
PHP: function getElementByPath($arr, $key){ foreach (explode('.', $key) as $v){ $arr = $arr[$v]; } return $arr; }; $arr = ['s1'=>['s2'=>['s3'=>'123']]]; $str = 's1.s2.s3'; echo getElementByPath($arr, $str); это вариант без рекурсии, но с циклом и в разы быстрее приведенного выше говнокода да здесь нет обработки ошибок, но это не важно код нужно писать простой и понятный название длинных переменных - вам явно к врачу или читать про нотации и выбрать для себя логику наименования переменных, а не плодить их где не нужно любая функция производящая действия со всеми элементами массива по сути цикл
Не зачет. --- Добавлено --- Ты бы хоть почитал, что там написано Тебя вообще порвет. Они же контекстной привязки не имеют!11!!!!!1!!!1!рас!!1!Раз!111! И тред почитал бы. Если ты всерьез к этому индусскому коду отнесся, то я бы обсудил, кому тут надо ко врачу. И снижай-ка градус агрессии, доктор Хаус. Я серьезно. Попутно подключи модуль юмора и иронии.
Читать умеем? Здесь один вариант без цикла приведен через eval Все остальное те же яйца только обернутые в функции обрабатывающие циклом каждый элемент массива Варинт с foreach будет самым быстрым, та как другие (без циклов) будут преобразовывать данные из одного типа в другой Мне по xyz и я давно работаю
Показывай им мой код, поржете вместе А потом встань и красиво уйди. Такие задания - это дрочь ради дрочи, как в армии.