Вы здесь

Как преобразавать строку в число

-4

Не знаю как перевести строковое число в число, все php-шные решения ((int), intval(), settype()...) не работают, пишет ошибку "Fatal error: Unsupported operand types in \modules\block\block.module on line 352". Это так в блоке, в страничном модуле просто возвращает 0.

Версия Drupal: 
7.x
Категория: 
Block API
Вопрос задан 28.08.2015 - 08:59
function block_first_block_info() {
    $blocks = array();
    $blocks['block_first'] = array(
        'info' => t('First Block'),
    );
    return $blocks;
}

function block_first_block_view($delta = '') {
    $blocks = array();
    if($delta == 'block_first') {
        $blocks['subject'] = t('Block Subject');
        $blocks['content'] = block_view();
    }
    return $blocks;
}
function block_view() {
    $out = '15';
    $out = (int)$out;
  return $out;
}

Комментарий оставлен 28.08.2015 - 11:44

Когда убираю вот эту строку

$out = (int)$out;

то ошибку не показывает, но и возвращается то строковый тип(

Комментарий оставлен 28.08.2015 - 11:48

то ошибку не показывает, но и возвращается то строковый тип(

Так естественно, если ожидает получить строку или массив.
Если нужно обрабатывать числа, то приводишь к integer, но потом возвращаешь строку.

Комментарий оставлен 28.08.2015 - 13:57

Ответы

1

$blocks['content'] принимает строковый тип или рендер-массив, которые потом выводятся на экран.
Если нужны какие-то вычисления в функции block_view, то перед return преобразуйте $out снова в строковый тип:

function block_view() {
    $out = '15';
    $out = (int)$out;
    // ...
    // Вычисления с $out
    // ...
    $out = (string)$out;
    return $out;
}

Или я что-то не понял из вопроса?

Ответ дан 28.08.2015 - 12:08

О, наконецто идейка хорошая, спасибо

Комментарий оставлен 28.08.2015 - 12:13
-1

Сделай
$foo = $foo +0;
Должно помочь.

Ответ дан 30.08.2015 - 03:40