Приветствую форумчане!
Помощь очень нужна Ваша.
Views 3
Темизировал вывод views по полям.
Настроил вывод полей в это представление.
Одно из полей необходимо математически посчитать.
---------------------------------------------------
<?php foreach ($fields as $id => $field): ?>
<?php if (!empty($field->separator)): ?>
<?php print $field->separator; ?>
<?php endif; ?>
<?php
if($id=='title'){$field_title=$field->content;}
if($id=='field_kartinka_tovara'){$field_kartinka_tovara=$field->content;}
if($id=='field_cena_usd'){$field_cena_usd=$field->content;}
?>
<?php endforeach;?>
<? var_dump($field_cena_usd); ?>
---------------------------------------------------
var_dump($field_cena_usd);
выводит:
string(38) "55.55"
Надо получить значение 55.55
Как получить значение переменной или поля field_cena_usd?
Комментарии
Вроде ж совпадает.
<?php
$field_cena_usd = (float) $field_cena_usd; // #1
$field_cena_usd = \floatval($field_cena_usd); // $2
\settype($field_cena_usd, 'float'); // #3
?>
#1 #2 и #3 Выдают значение 0
var_dump($field_cena_usd);
float(0)
Это происходит потому что в переменную попадает массив. String(38) вместо String(5). Ведь в значении 55.55 имеем 5 знаков, а не 38.
Если во views в настройках вывода поля убрать вывод тегов и пробелов и т.д., то получается String(16). Визуально views выводит само значение 55.55, но по факту там есть еще что-то. Из-за это что-то не работают (int), (float) - выводят просто 0.
Вот и вопрос, как вытащить само значение 55.55, что-бы var_dump($field_cena_usd); показал String(5)? Тогда значение можно будет перевести во Float и посчитать.
trim();
Благодарю!
Итог: в настройках поля поставил галочки "Убрать HTML тэги" и "Убрать пробелы".
В коде страницы вывелось < div >55.55< / div >
Далее использовал функцию trim();
$field_cena_usd = trim($field_cena_usd, "< div >.....< / div >");
var_dump($field_cena_usd);
Показал String(5)
Далее без преобразования во Float в формуле подсчета все посчиталось.
Однако, это не феншуй.
Разве нельзя одним запросом drupal получить значение этого поля?
$val = (float) trim(strip_tags($field_cena_usd));
А вообще посмотрите все свойства объекта field, там должен быть raw из базы