Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как посчитать количество слов в файле?
 
 автор: Giga   (11.08.2007 в 15:12)   письмо автору
 
 

Мысль посчитать пробелы $file=file_get_contents('file.txt'); $countw = count( explode(' ',$file) ); но вот результат при этом зачастую вылетает отличимый от визуального подсчета. Как правильно подсчитать?

   
 
 автор: Futurer   (11.08.2007 в 15:58)   письмо автору
 
   для: Giga   (11.08.2007 в 15:12)
 

Вы чувствуете разницу между count() и sizeof()

   
 
 автор: Shiva   (11.08.2007 в 16:36)   письмо автору
 
   для: Futurer   (11.08.2007 в 15:58)
 

Я не чувствую. А вы?

   
 
 автор: Futurer   (11.08.2007 в 17:38)   письмо автору
 
   для: Shiva   (11.08.2007 в 16:36)
 

count(var)
Возвращает количество элементов объекта var, который обычно представляет собой массив. Если это не массив, фунция возвращает 1; если параметр var не установлен, возвращается 0.

sizeof(array)
Возвращает количество элементов массива. Пустые элементы так же учитываются. Эта функция подобна count(), но используется специально для массивов.

   
 
 автор: Shiva   (11.08.2007 в 17:58)   письмо автору
 
   для: Futurer   (11.08.2007 в 17:38)
 

Мануал http://php.ru/manual/function.sizeof.html сообщает,что sizeof - "Alias of count()"

Вы правы, они отличаются значениями, возвращаемыми в случае , если аргумент не массив - это имеет значение при проверке данных. Но обе предназначены "специально для массива", и, если аргумент - массив, ведут себя одинаково.

   
 
 автор: Futurer   (11.08.2007 в 18:01)   письмо автору
 
   для: Shiva   (11.08.2007 в 17:58)
 

count() не предназначался специально для массивов, ибо если на входе строка, то он возвращает количество символов в строке
у меня на столе лежит справочник - изнего и цитировал, да и по опыту знаю
Проверьте:

echo count(array("a","e","q",""));
//и
echo count(array("a","e","q"));
//получите одинаковые значения
//а если
echo sizeof(array("a","e","q",""));
echo sizeof(array("a","e","q"));
//то значения будут отличаться

   
 
 автор: Unkind   (11.08.2007 в 18:08)   письмо автору
 
   для: Futurer   (11.08.2007 в 18:01)
 

Проверьте:
А Вы сами проверяли? Выкиньте справочник.

   
 
 автор: Futurer   (11.08.2007 в 18:22)   письмо автору
 
   для: Unkind   (11.08.2007 в 18:08)
 

Да я ошибся. Но эти функции не идентичны.
Говорю, глюканул.

   
 
 автор: Unkind   (11.08.2007 в 18:23)   письмо автору
 
   для: Futurer   (11.08.2007 в 18:22)
 

Но эти функции не идентичны.
Может быть в старых версиях PHP так было. Но в PHP5 они алиасы и, соответственно, точно идентичны друг другу.

   
 
 автор: Futurer   (11.08.2007 в 18:27)   письмо автору
 
   для: Unkind   (11.08.2007 в 18:23)
 

Но ведь количество элементов объекта и количество элементов массива это разве не разные вещи? Ведь массив это только частный случай. Или я опять не туда?

   
 
 автор: Unkind   (11.08.2007 в 18:35)   письмо автору
 
   для: Futurer   (11.08.2007 в 18:27)
 

Но ведь количество элементов объекта
Какого объекта? Если Вы всё еще про строку, то обе фунции возвратят int(1), т.к. в PHP
<?php
$string 
"string";
$array = (array) $string;
print_r($array); //Array ( [0] => string )
?>

   
 
 автор: kasmanaft   (11.08.2007 в 18:15)   письмо автору
 
   для: Futurer   (11.08.2007 в 18:01)
 

> если на входе строка, то он возвращает количество символов в строке
Дану?

   
 
 автор: Shiva   (11.08.2007 в 16:48)   письмо автору
 
   для: Giga   (11.08.2007 в 15:12)
 

Попробуйте так:

<?php
function filter($element)
{
    return (boolean) 
trim($element);
}

$file=file_get_contents('file.txt'); 
$countv count(array_filter(explode(" "$file), "filter"));
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования