Арифм. операции с элем. массива

corvus

Guest
Арифм. операции с элем. массива

Есть массив с числами float,
не получается выполнять над этими числами арифм. операции.

Например, если пишу
PHP:
$MyArray[1]['b'] = 0.01*$OtherArray[2]['d'];

интерпретатор пишет:
Fatal error: Unsupported operand types

а если

PHP:
$MyArray[1]['b'] = 0.01*(float)$OtherArray[2]['d'];
или

PHP:
$MyArray[1]['b'] = 0.01*((float)$OtherArray[2]['d']);
то сообщения об ошибке нет, но зато левая часть
принимает значение 0.01, то есть всё, что стоит в правой части
после (float), воспринимается как 1 !???
(хотя это совсем не так, проверял var_dump($OtherArray),
в массиве лежат числа float ).
Помогите, пожалуйста! Заранее благодарен ;)
 

netdog

net @
У меня всё работает. Значит это или hands
или сам пхп глючит.

PHP:
<?php
$OtherArray[2]['d']=0.01;

echo  0.01*$OtherArray[2]['d'];

// ==  0.0001

?>
 

Crazy

Developer
Это именно руки. Вероятная причина -- неверная структура массива $OtherArray.

Контрольный пример:

PHP:
<?php

$OtherArray = array(2 => array ('d' => 3.1415));
$MyArray = array(1 => array ('b' => 0));

$MyArray[1]['b'] = 0.01*$OtherArray[2]['d'];

print_r($MyArray);

?>
 

Corvus2

Guest
Спасибо, заработало! А знаете, в чём было дело???
Данные для массива я беру из бинарного файла
( четырёхбайтные single ), код примерно такой:
PHP:
fseek($fp, $offset);
$rec = fread($fp, 4);
fclose($fp);
$newrec = unpack ('f', $rec);
$OtherArray[2]['d'] = $newrec;
Так вот, выяснилось, что unpack возвращает не число,
а странного вида массив
PHP:
array("" => 123.456789)
Поэтому всё заработало, когда последняя строчка стала
PHP:
$OtherArray[2]['d'] = $newrec[""];
 
Сверху