[ok]

Решение: при обращении к массивам из функций надо писать &$array, а не $array. Это называется обращением по ссылке. Непонятно, почему так, ну и ладно. Главное разобрались.

upd: В общем, поиск конкретно по теме ссылок дал следующее.
Если функция изменяет входные переменные, то их надо передавать по ссылке, то есть в виде function name(&$var1, &$var2) { ... }.
Если же функция не меняет входные параметры, то можно просто передать данные: function name($var1, $var2) { ... }.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Здравствуйте.

Я тут малясь туплю и уже даже не знаю, что сделать можно.

Есть кусочек кода.

$f = Array();

function sdf($d, $arr)
{
if ($handle = opendir($d))
{
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..")
{
array_push($arr, $file);
}
}
closedir($handle);
}
}

sdf('.', $f);
echo count($f);


Теоретически, в выводе я должен получить число элементов в массиве.
Но практически, я наблюдаю ситуацию, что array_push добавляет элементы только когда он находится за пределами функции. Если же внутри, то он как будто вообще не выполняется. Не зависимо от того, как я обращаюсь к массиву, как к глобальной переменной ($f) или как к локальной ($arr).

Прошу помочь, кто знает в чём проблема.
Текст брал отсюда: www.php.su/readdir()