RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 554
от 27.12.2006, 16:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 397, Экспертов: 47
В номере:Вопросов: 3, Ответов: 9


Вопрос № 68034: Здравствуйте! Как изменить в функции значение переменной указанной при вызове? function myfunc($s) { $s = 222; } $p =1; myfunc($p); echo $p // на экране 222 И ещё, пожалуйста, подскажите как вернуть мас...
Вопрос № 68071: Наткнулся на проблемку. Написал базу на тхт-шках в РНР. Нужно на главной вывести число записей (файлов) в папке. Причем для разных префиксов файла (например преф_имя.тхт). Как силами РНР это сделать?...
Вопрос № 68147: В файле 1.txt есть какой-то текст, как можно очистить файл средствами Php?...

Вопрос № 68.034
Здравствуйте!

Как изменить в функции значение переменной указанной при вызове?

function myfunc($s) {
$s = 222; }

$p =1;
myfunc($p);
echo $p // на экране 222

И ещё, пожалуйста, подскажите как вернуть массив. Конкретно функция должна вернуть массив, полученный моей функцией из базы данных.

p.s. Вопрос конечно глупый, понимаю. Но я с этим не привык работать, туго соображаю. Там вроде бы какие-то указатели, или ещё чего? На асме и то понятнее.
Отправлен: 21.12.2006, 18:47
Вопрос задал: Талипов А Н (статус: 2-ой класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PVS
Здравствуйте, Талипов А Н!
1)function myfunc(&$s)
&$s - передача ссылки а не значения
2)return $что_угодно;
оператору return все рвно что возвращать. Напишете массив - будет массив.
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 21.12.2006, 18:53
Оценка за ответ: 5

Отвечает: Райкин Сергей Александрович
Здравствуйте, Талипов А Н!
Здесь много вариантов, смотря что вы хотите. Вообщето ваш пример выводит 1.
1.
function myfunc($s=222) {
echo $s; }
$p =1;
myfunc($p);
// на экране 1

2
function myfunc($s=222) {
echo $s; }
myfunc();
// на экране 222 (то что по умолчанию)

3
function myfunc($s=222) {
return $s; }
$p =5;
$a=myfunc($p);
echo $a;
// на экране 5 (то что по умолчанию)

насчет массивов.
1
function myfunc() {
$s[0] = 222;
$s[1] = 5;
$s[2] = 1000;
return $s;}
$arr=myfunc();
echo $arr[0];
echo "<br />";
echo $arr[1];
echo "<br />";
echo $arr[2];
// на экране 222 5 1000

2
function myfunc() {
global $s_fun; // делаем переменную s_fun доступною и вне функции
$s_fun[0] = 222;
$s_fun[1] = 5;
$s_fun[2] = 1000; }
myfunc();
echo $s_fun[0];
echo "<br />";
echo $s_fun[1];
echo "<br />";
echo $s_fun[2];
// на экране 222 5 1000
---------
программист должен работать в свое удовольствие
Ответ отправил: Райкин Сергей Александрович (статус: 2-ой класс)
Ответ отправлен: 21.12.2006, 19:00
Оценка за ответ: 5
Комментарий оценки:
Оказывается способов целая куча!Хотя что касается простых переменных с сылками удобнее.А за подробности с массивами огромное спасибо!

Отвечает: Anton S Petrov
Здравствуйте, Талипов А Н!
Документацию читать не пробовали ?!

function square ($num)
{
return $num * $num;
}
echo square (4); // outputs '16'.
Ответ отправил: Anton S Petrov (статус: 1-ый класс)
Ответ отправлен: 22.12.2006, 05:58
Оценка за ответ: 3
Комментарий оценки:
Документацию читал, может не очень внимательно. То что вы предложили знаю это не то.И к сожалению ваш ответ нельзя подогнать под мой вопрос. А потом посмотрите минифорум. PVS добавил к моему примеру один знак, но какой эффект. Именно то что нужно!
Кстати вы продублировали часть ответа Райкина.


Вопрос № 68.071
Наткнулся на проблемку. Написал базу на тхт-шках в РНР. Нужно на главной вывести число записей (файлов) в папке. Причем для разных префиксов файла (например преф_имя.тхт). Как силами РНР это сделать?
Отправлен: 21.12.2006, 22:42
Вопрос задал: Atom (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Барков Илья Андреевич
Здравствуйте, Atom!
из мануала:

<?php

if ($handle = opendir('/path/to/files')) {
echo "Directory handle: $handle ";
echo "Files: ";

/* This is the correct way to loop over the directory. */
while (false !== ($file = readdir($handle))) {
echo "$file ";
}

/* This is the WRONG way to loop over the directory. */
while ($file = readdir($handle)) {
echo "$file ";
}

closedir($handle);
}
?>
Ответ отправил: Барков Илья Андреевич (статус: 5-ый класс)
Ответ отправлен: 21.12.2006, 22:55

Отвечает: Anton S Petrov
Здравствуйте, Atom!

$cnt=0;
$rolldir = opendir('ПУТЬ ДО НУЖНОЙ ДИРЕКТОРИИ');
while($item = readdir($rolldir)) {
$filename=$item;
if (УСЛОВИЕ) {
$cnt++;
}
}
echo $cnt;
Ответ отправил: Anton S Petrov (статус: 1-ый класс)
Ответ отправлен: 22.12.2006, 06:07

Отвечает: HookEst
Здравствуйте, Atom!
для PHP 5 строка:

echo count(preg_grep('/^pref.*$/',scandir('news')));

выведет количество файлов в директории news имя которых начинается с pref

p/s
а это аналог scandir для PHP < 5
if(!function_exists('scandir')){
//scandir только в PHP 5
function scandir($d ,$s=0){
$dh = opendir($d);
while (false !== ($f = readdir($dh)))
$fs[] = $f;
$s?sort($fs):rsort($fs);
return $fs;
}
}
Ответ отправил: HookEst (статус: Студент)
Ответ отправлен: 22.12.2006, 07:17


Вопрос № 68.147
В файле 1.txt есть какой-то текст, как можно очистить файл средствами Php?
Отправлен: 22.12.2006, 13:44
Вопрос задал: Тимоша (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: PVS
Здравствуйте, Тимоша!
Последовательность
$fp=fopen("1.txt","w");
fclose($fp);
очистит файл и закроет его. Если надо можно сразу же fwrite($fp,"SomeText"); посредине вставить.
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 22.12.2006, 13:51
Оценка за ответ: 3

Отвечает: Козлов А. С.
Здравствуйте, Тимоша!
Если Вам нужно просто сделать его пустым, то можно сделать так:
1. При открытие файла указываем режим w или w+. В режиме w создается новый пустой файл, при наличии файла с таким именем - старый удаляется и создается новый. В режиме w+ открывается существующий файл и тут же стирается его содержимое.
2. Использование функции ftruncate(int $f, int $newsize). Эта функция усекает открытый файл $f до размера $newsize.

$f = fopen("file.txt", "r+"); // открыть существующий файл на чтение и запись
ftruncate($f, 0); // очистить содержимое
fseek($f, 0, SEEK_SET); // перейти в начало файла.

---------
Вы доставили мне истинное удовольствие, взвалив на меня собственные проблемы, парни! (М. Фрай).
Ответ отправил: Козлов А. С. (статус: Студент)
Ответ отправлен: 22.12.2006, 13:55
Оценка за ответ: 5
Комментарий оценки:
Отличный и понятный ответ!

Отвечает: Arykray
Здравствуйте, Тимоша!

Если вы хотите полностью очистить файл, то почему бы вам ни воспользоваться функцией создания нового пустого файла:

$file = fopen("dir.../1.txt","w");

---------
Чем сложнее задача, тем проще ее не решать.
Ответ отправил: Arykray (статус: 1-ый класс)
Ответ отправлен: 23.12.2006, 12:23


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

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

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.38 от 20.12.2006
Яндекс Rambler's Top100

В избранное