Przyglądam się strukturze funkcji preg_match():
mixed preg_match ( string pattern, string subject [, array &matches [, int flags [, int offset]]] )
Jak widać tablica &matches jest niewymaganym argumentem, ale jeżeli wpiszemy tam nazwę dowolnej zmiennej, jej wartością będzie przekazana przez referencje właśnie ta tablica z atomami.
Zainteresowałem się tym i sam stworzyłem z rozpędu kilka funkcji np.:
Kod
<?php
function count_sql($table,$parameters = FALSE,&$count = FALSE) {
$count = mysql_num_rows(mysql_query('SELECT 1 FROM `'.PREFIX.$table.'` '.$parameters));
return $count;
}
?>
Działało, tak jak się spodziewałem. Jeżeli wysłałem to na zdalny serwer (netlook.pl), paser wyświetlił, że nie spodziewał się tego równasię po &$count, tylko od razu nawiasika.function count_sql($table,$parameters = FALSE,&$count = FALSE) {
$count = mysql_num_rows(mysql_query('SELECT 1 FROM `'.PREFIX.$table.'` '.$parameters));
return $count;
}
?>
Patrzyłem rozdział XXI - http://www.php.net/manual/pl/language.refe...erences.whatare i nie znalazłem nigdzie takiego przykładu, który prezentowałby taki argument jako niewymagany. Więc, czy jest możliwe zrobienie funkcji przekazującej coś przez referencje z argumentem niewymaganym, jaka to możliwość? A jeżeli nie ma, to czemu u mnie, na raczej domyślnych (nie na żadnym krasnalu itp) ustawieniach php 5 działa?