@dfhusfhgsuo3

Почему функция не видит количество передаваемых байтов (т.е. переменной)?

Добрый день.

Есть такая вот функция для перевода байтов в кб, мб и т.д. Байты получаем через JS <%- size %>. Если выводить их отдельно, то все работает, таким образом (байты выводит):

<?php
function FBytes($bytes, $precision = 2) {
$units = array('B', 'KB', 'MB', 'GB', 'TB');
$bytes = max($bytes, 0);
$pow = floor(($bytes?log($bytes):0)/log(1024));
$pow = min($pow, count($units)-1);
$bytes /= pow(1024, $pow);
return round($bytes, $precision).' '.$units[$pow];
}
$a = '<%- size %>';
echo $a;
?>

Если же подключаем функцию к переменной, которая должна обрабатывать её, то выводит 0:

<?php
function FBytes($bytes, $precision = 2) {
$units = array('B', 'KB', 'MB', 'GB', 'TB');
$bytes = max($bytes, 0);
$pow = floor(($bytes?log($bytes):0)/log(1024));
$pow = min($pow, count($units)-1);
$bytes /= pow(1024, $pow);
return round($bytes, $precision).' '.$units[$pow];
}
$a = '<%- size %>';
echo FBytes($a);
?>

Сама функция работает, если ввести любое число.

В чем может быть проблема?

Дело точно не в строке, думаю это очевидно. Таким образом работает:

FBytes($bytes, $precision = 2) {
$units = array('B', 'KB', 'MB', 'GB', 'TB');
$bytes = max($bytes, 0);
$pow = floor(($bytes?log($bytes):0)/log(1024));
$pow = min($pow, count($units)-1);
$bytes /= pow(1024, $pow);
return round($bytes, $precision).' '.$units[$pow];
}

$a = '123124124';
echo FBytes($a);
?>

Заранее благодарен за помощь.
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ответы на вопрос 1
@darksladen
<%- size %> где вы это нашли? Чтобы получить значение из js, его надо передать в скрипт через ajax или форму. То есть получать значение вы должные например так:

$a = $_GET['a'];
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы