В чём разница использования следующих вызовов переменных? Как я понял, одни из них устарели и не безопасны, но в чём это заключается я так и не понял.
$names = fix_names("WILLIAM", "henry", "gatES");
function fix_names($n1, $n2, $n3)
{
$n1 = ucfirst(strtolower($n1));
$n2 = ucfirst(strtolower($n2));
$n3 = ucfirst(strtolower($n3));
return array($n1, $n2, $n3);
}
echo $names[0] . " " . $names[1] . " " . $names[2]."<br>";
$a1 = "WILLIAM";
$a2 = "henry";
$a3 = "gatES";
function fix_names(&$n1, &$n2, &$n3)
{
$n1 = ucfirst(strtolower($n1));
$n2 = ucfirst(strtolower($n2));
$n3 = ucfirst(strtolower($n3));
}
echo $a1." ".$a2." ".$a3."<br>";
fix_names($a1, $a2, $a3);
echo $a1." ".$a2." ".$a3;
$a1 = "WILLIAM";
$a2 = "henry";
$a3 = "gatES";
function fix_names()
{
global $a1; $a1 = ucfirst(strtolower($a1));
global $a2; $a2 = ucfirst(strtolower($a2));
global $a3; $a3 = ucfirst(strtolower($a3));
}
echo $a1." ".$a2." ".$a3."<br>";
fix_names();
echo $a1." ".$a2." ".$a3;
Первый отличается от других тем, что он не портит переданные аргументы и является чистой функцией. Третий отличается от второго, тем что он знает, какие именно переменные надо менять и делает это самостоятельно.
Разницы тут нет, все три - это все какие-то извращенные способы работы с переменными. Ни один из них не является небезопасным или устарел, но они все просто неудобные. Последний, впрочем, все же хуже первых двух - после вызова функции переменные вдруг меняют свое значение, и непонятно по какой причине.
Проще всего сделать простую и понятную функцию и просто и понятно ее вызывать
function fix_name($n)
{
return ucfirst(strtolower($n));
}
$a1 = "WILLIAM";
$a2 = "henry";
$a3 = "gatES";
echo fix_name($a1) . " " . fix_name($a2) . " " . fix_name($a3)."<br>";
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
положил страницу с вот таким php скриптом на удалённый хостинг
Пишу простое консольное приложение с командами на основе классов Symfony\Component\Console\Command\Command
Кто-нибудь сталкивался с проблемой, когда вызов in_array на большом массиве (500 000 элементов) выдает internal Server Error? Вызывается внутри перебора RecursiveIteratorIterator...