Вычитание float из массива

#php #arrays

#php #массивы

Вопрос:

У меня есть массив, который содержит несколько значений с числовым индексом. Тип данных для каждого значения — string. Хотя предполагалось, что это число с плавающей запятой (38.50, 22.12 и т.д.). Что я хочу сделать сейчас, так это вычесть каждое значение из массива с числом, которое я хотел бы указать сам. А затем найдите абсолютное число на случай, если в результате вычитания получится отрицательное число.

Как я могу это сделать?

Комментарии:

1. Сформулировав по-другому, вы хотели бы выполнить итерацию по массиву (который является string[] , но должен быть float[] ) и вычесть другое значение с плавающей запятой из каждого элемента в массиве?

Ответ №1:

Вы хотите заглянуть в функцию array_map().

Комментарии:

1. Я собираюсь дать 1 только из того, что я вижу. TBH, не уверен, что точно хочет OP, но эта функция должна помочь ему / ей справиться с этим.

Ответ №2:

Я не знаю, это ли вы имели в виду:

 $original_array = array('38.50', '22.12');

function sort( $n ){
    $num = 12.0;
    return (double)$n - $num;
}

$newarray = array_map("sort", $original_array );
  

Однако преобразование целого числа или строки в float может быть затруднительным.

Использование любой из этих функций сначала преобразует их в правильное значение float:

 function float_format( $number, $decimal = 2, $decimal_sep = '.', $thousands_sep = '' ){
    return number_format($number, $decimal, $decimal_sep, $thousands_sep);
}

function float_val( $number, $decimal, $float_locale = 'f' ){
    //f - the argument is treated as a float, and presented as a floating-point number (locale aware).
    //F - the argument is treated as a float, and presented as a floating-point number (non-locale aware). Available since PHP 4.3.10 and PHP 5.0.3.
    return (double)sprintf("%.".$decimal.$float_locale, $number);
}
  

Первый из которых лучше подходит для currency. Надеюсь, это поможет.