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

Форум PHP

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

 

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

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

тема: Измерять размер строковой переменной в байтах
 
 автор: sirov   (24.06.2007 в 11:59)   письмо автору
 
 

Здравствуйте. Скажите пожалуйста как это сделать, какая для этого есть функция?

Заранее спасибо

   
 
 автор: cheops   (24.06.2007 в 12:12)   письмо автору
 
   для: sirov   (24.06.2007 в 11:59)
 

Можно воспользоваться функцией strlen().

   
 
 автор: Петр   (22.01.2008 в 19:31)   письмо автору
 
   для: cheops   (24.06.2007 в 12:12)
 

а как расчитать размер сложного массива (с неизвестной глубиной вложенности) в байтах?

   
 
 автор: DJ Paltus   (22.01.2008 в 19:51)   письмо автору
 
   для: Петр   (22.01.2008 в 19:31)
 

Размер массива в байтах и количество памяти, которую он занимает, различаются, так как в массиве, помимо самих данных, содержится служебная инфа о структуре массива (это на всякий случай).
А чтобы просто все байты содержимого массива сосчитать - пожалуйста:


<?php
$arr
=array("one","two","three","four");
$sum=0;
foreach (
$arr as $str$sum=$sum+strlen($str);
echo 
"Вуа-ля: ".$sum;
?>

   
 
 автор: DJ Paltus   (22.01.2008 в 20:01)   письмо автору
 
   для: DJ Paltus   (22.01.2008 в 19:51)
 

а, пардон, не дочитал техзадание...


<?php
$arr
=array("one","two","three","four");

function 
add($an){
    
$sum=0;
    foreach (
$arr as $str) {
        
$sum=$sum+strlen($str); 
        if(
is_array($str)) add($str); //если очередной элемент тоже массив, вызываем рекурсию
        
}
    return(
$sum);
    }
    echo 
"Вуа-ля: ".add($arr);    
?>


Наверное, так, не могу сейчас протестировать.

   
 
 автор: kasmanaft   (22.01.2008 в 20:09)   письмо автору
 
   для: DJ Paltus   (22.01.2008 в 20:01)
 

>> if(is_array($str)) add($str); //если очередной элемент тоже массив, вызываем рекурсию
В таком случае не надо считать его длину :)
Правильнее, наверное, будет if(is_array($str)) $sum += add($str);

т.е.
<?php
$arr
=array("one","two","three","four"); 

function 
add($an){ 
    
$sum=0
    foreach (
$arr as $str) { 
        if(
is_array($str)) 
             
$sum += add($str); //если очередной элемент тоже массив, вызываем рекурсию 
        
else $sum += strlen($str);  
        } 
    return(
$sum); 
    } 
    echo 
"Вуа-ля: ".add($arr);     
?>


Проверить тоже не на чем.....

   
 
 автор: DJ Paltus   (22.01.2008 в 20:18)   письмо автору
 
   для: kasmanaft   (22.01.2008 в 20:09)
 

Разве не надо? Чето я запуталсо. Все верно, ОК.

   
 
 автор: Петр   (22.01.2008 в 21:02)   письмо автору
 
   для: DJ Paltus   (22.01.2008 в 20:18)
 

спасибо большое

   
 
 автор: vitali   (23.01.2008 в 09:54)   письмо автору
 
   для: Петр   (22.01.2008 в 21:02)
 

Прошу прощение, на Вашем форуме новичок, как впрочем и с PHP (изучаю). Запустил Ваш (kasmanaft ) скрипт, получил следующее:
Warning: Invalid argument supplied for foreach() in …(URL)…. on line 6
Вуа-ля: 0.

   
 
 автор: mihdan   (23.01.2008 в 10:38)   письмо автору
 
   для: vitali   (23.01.2008 в 09:54)
 


function add($an)  -> function add($arr)  

   
Rambler's Top100
вверх

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