Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
<?php
function prepareArr(&$arr) {
print count($arr) * 2;
}
<?php
function prepareArr($arr) {
print count($arr) * 2;
}
$a = array(1, 2, 3, 4, 5);
prepareArr(&$a);
<?php
function prepareArr($arr) {
print count($arr) * 2;
return $arr; // Не будет иметь никаого смысла, т.к. мы $arr не измеяли, но все же для демонстрации
}
$a = array(1, 2, 3, 4, 5);
$a = prepareArr($a);
Do not use return-by-reference to increase performance, the engine is smart enough to optimize this on its own. Only return references when you have a valid technical reason to do it!
$a = 1;
$b = 3;
$c = 5;
$d = a(b($a, $b), c($c));
Pseudo-hashes have been removed from Perl. The 'fields' pragma remains available.Можете ознакомиться с perlref
Заменим все шестнадцатеричные числа в тексте на их десятичные представления.
Perl:
$text=~s/([0-9A-F]+)/hex($1)/ige;
PHP:
$text=preg_replace_callback('/[0-9A-F]+/i',
create_function('$t', 'return hexdec($t[0]);'),
$text);
preg_replace('/[0-9A-F]+/ie',"hexdec('$0')", $text);Одно и то же действие, но какая разница.Главное — побольше драматизма в словах.
Надеюсь, никто не ждал, что значение переменных окажется одинаковым? :) Шутка
function change(&$arr) {$arr[] = 1;}
$start = microtime(true);
for($q=0; $q<5000; $q++) {change($a);}
echo microtime(true)-$start;
function change($arr) {$arr[] = 1; return $arr;}
$start = microtime(true);
for($q=0; $q<5000; $q++) {$a = change($a);}
echo microtime(true)-$start;

foreach ($array as &$row) {
$row['a']='b';
}
foreach ($array as $k=>$row) {
$array[$k]['a']='b';
}
Отрицательная сторона передачи значений по ссылкам