#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. Надеюсь, это поможет.