не был должен бросок рекурсии массива PHP ошибка?

Это - тест и ответ, который я получаю. Я думаю, что это могло быть проблематично и должно бросить ошибку или уведомление, но я не могу понять, почему допускается.

<?php
    $test = array( 0 => 'test', 1=> &$test );
    var_dump( $test );

    // array(2) { [0]=> string(4) "test" [1]=> &array(2) { [0]=> string(4) "test" [1]=> &array(2) { [0]=> string(4) "test" [1]=> *RECURSION* } } }
?>
7
задан Elzo Valugi 14 January 2010 в 15:23
поделиться

5 ответов

No. После завершения просить PHP все ресурсы будут освобождены, включая ресурсы подключения MySQL.

-121--3460700-

Еще одним вариантом было бы создание новой конфигурации в Visual Studio помимо отладки и выпуска.... возможно, Debug32 и Debug64 и т.д. Одним из параметров настройки конфигурации является архитектура ЦП.

Затем в постобъектах Проекта можно сделать старомодное утверждение if/else, используя макрос имени платформы в качестве условия...

Если имя платформы использовалось в качестве подкаталога в решении, в котором хранилась неуправляемая библиотека DLL, можно скопировать из каталога с использованием имени платформы в каталог bin.

-121--4349626-

Это истинная рекурсия, и * RECURSION * не является реальным сообщением об ошибке. Это не проблематично, потому что $ test не является активно повторяющимся, и в этом случае var _ dump достаточно умен, чтобы остановиться перед истощением памяти.

5
ответ дан 7 December 2019 в 05:23
поделиться
System.Diagonstics.Process.Start("chipher.exe /WC:\");

Это асинхронный по умолчанию, вы получаете идею.

-121--4407661-

Вам нужно зарегистрировать Viewengine:

ViewEngines.Engines.Add(new SparkViewFactory());
-121--4950855-

Я бы предположил, что обнаружение такого цикла нетривиально и будет сразу видно во время выполнения, если поведение было неправильным.

1
ответ дан 7 December 2019 в 05:23
поделиться

Почему это проблематично? PHP достаточно уют, чтобы определить, что массив рекурсивно вызывается.

То же самое происходит, если вы print_r ($ Globals) , я не вижу вреда в этом.

1
ответ дан 7 December 2019 в 05:23
поделиться

Вы устанавливаете ссылку, то есть указатель, так что нет истинной рекурсии, без цикла. Так что нет, это не должно бросить ошибку.

1
ответ дан 7 December 2019 в 05:23
поделиться

Акции * Рекурсиция * Сообщение - это сообщение об ошибке, которое заканчивает выполнение скрипта. Иначе он будет выполнен, пока не будет внесен предел памяти.

0
ответ дан 7 December 2019 в 05:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: