Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > Общие вопросы Web
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2022, 15:26   #1
underground23
Пользователь
 
Регистрация: 04.10.2022
Сообщений: 13
Вопрос Как в php округлить значения массива и вывести.

Доброго времени суток уважаемые форумчане. По условию задачки нужно создать массив, в котором элементы массива: числа с плавающей точкой и степень округления. Нужно создать такой массив, округлить и вывести на страницу. На экране должно быть примерно так:

3.534534534545 округляем до 2: получаем 3.53
100.5 округляем до 4: получаем 100.5000
1.2545 округляем до 2: получаем 1.25
5.5486 округляем до 3: получаем 5.549
8.78754 округляем до 0: получаем 9

Код:
<?php
$array = [3.534534534545 => 2, 100.5 => 4, 1.2545 => 2, 5.5486 => 3, 8.78754 => 0];

print_r($array);
?>
Помогите пожалуйста разобраться.
underground23 вне форума Ответить с цитированием
Старый 27.11.2022, 16:31   #2
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 489
По умолчанию

Для надала напиши цикл для обхода этого массива.
Valick вне форума Ответить с цитированием
Старый 27.11.2022, 18:04   #3
underground23
Пользователь
 
Регистрация: 04.10.2022
Сообщений: 13
По умолчанию

Написал цикл foreach
Код:
<?php
$array = [3.534534534545 => 2, 100.5 => 4, 1.2545 => 2, 5.5486 => 3, 8.78754 => 0];
foreach ($array as $key => $value) 
        {
            echo "Элемент $key содержит: $value <br>";
        } 
?>
Он почему-то убрал цифры после точки.
underground23 вне форума Ответить с цитированием
Старый 27.11.2022, 18:15   #4
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 489
По умолчанию

https://www.php.net/manual/ru/language.types.array.php

key может быть либо типа int, либо типа string. value может быть любого типа.

Дополнительно с ключом key будут сделаны следующие преобразования:

Строки (string), содержащие целое число (int) (исключая случаи, когда число предваряется знаком +) будут преобразованы к типу int. Например, ключ со значением "8" будет в действительности сохранён со значением 8. С другой стороны, значение "08" не будет преобразовано, так как оно не является корректным десятичным целым.
Числа с плавающей точкой (float) также будут преобразованы к типу int, то есть дробная часть будет отброшена. Например, ключ со значением 8.7 будет в действительности сохранён со значением 8.
Тип bool также преобразовываются к типу int. Например, ключ со значением true будет сохранён со значением 1 и ключ со значением false будет сохранён со значением 0.
Тип null будет преобразован к пустой строке. Например, ключ со значением null будет в действительности сохранён со значением "".
Массивы (array) и объекты (object) не могут использоваться в качестве ключей. При подобном использовании будет генерироваться предупреждение: Недопустимый тип смещения (Illegal offset type).
Valick вне форума Ответить с цитированием
Старый 27.11.2022, 18:16   #5
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 489
По умолчанию

underground23, сможешь сам догадаться, что надо сделать, что бы дробная часть не отбрасывалась?
Valick вне форума Ответить с цитированием
Старый 27.11.2022, 18:28   #6
underground23
Пользователь
 
Регистрация: 04.10.2022
Сообщений: 13
По умолчанию

Если привести к типу "строка", то он должен отразить её так как она написана. Но тогда ка-же со строкой делать математические действия? Или я не в ту сторону?
underground23 вне форума Ответить с цитированием
Старый 27.11.2022, 18:37   #7
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 489
По умолчанию

Абсолютно в ту сторону. РНР слаботипизированный язык (когото это бе, комуто это нра, в этом нет ничено ни плохого ни хорошего, про это просто надо знать и уметь этим пользоваться) и соответсующие преобразования производит "налету".
Но ничего не мешает привести строку к определённому типу явно, используя конструкцию языка "приведение к типу" (в частности (float)$key ), это даже будет более грамотно с точки зрения уровня владения языком программирования.
Осталось ознакомиться с фуркцией округления https://www.php.net/manual/ru/function.round.php и подставить соответствующие переменные в качестве аргументов функции.

Последний раз редактировалось Valick; 27.11.2022 в 18:42.
Valick вне форума Ответить с цитированием
Старый 27.11.2022, 19:12   #8
underground23
Пользователь
 
Регистрация: 04.10.2022
Сообщений: 13
По умолчанию

Получилось вот так:
Код:
<?php
$array = ['3.534534534545' => 2, '100.5' => 4, '1.2545' => 2, '5.5486' => 3, '8.78754' => 0];
foreach ($array as $key => $value) 
        {
            echo "<br>Элемент $key округляется до: $value <br>";
            var_dump(round($key, $value));
        } 
?>
Valick, спасибо огромное!
underground23 вне форума Ответить с цитированием
Старый 27.11.2022, 19:12   #9
underground23
Пользователь
 
Регистрация: 04.10.2022
Сообщений: 13
По умолчанию

Получилось вот так:
Код:
<?php
$array = ['3.534534534545' => 2, '100.5' => 4, '1.2545' => 2, '5.5486' => 3, '8.78754' => 0];
foreach ($array as $key => $value) 
        {
            echo "<br>Элемент $key округляется до: $value <br>";
            var_dump(round($key, $value));
        } 
?>
Valick, спасибо огромное!
underground23 вне форума Ответить с цитированием
Старый 27.11.2022, 19:21   #10
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 489
По умолчанию

Код:
var_dump(round((float)$key, $value));
Тут, как я и говорил, лучше явно указать приведение к типу. В принципе РНР сделает это и без нас, но явно указав тип переменной мы заявим всему миру (ну или только преподу), что "не пальцем деланные и ведаем, что творим".
Valick вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JavaScript: Найти площадь круга и длину окружности, радиус меняется от а до b с шагом 0,3. Результаты округлить и вывести в таблице. Использовать оператор цикла do-while. Нина852 Помощь студентам 0 08.03.2017 16:20
Вывести значения из массива mila_serdnaya PHP 1 06.11.2015 09:55
записать в файл массив, а в другой файл вывести повторные значения элементов массива С++ carrie bradshaw Помощь студентам 3 01.02.2014 23:27
Как вывести на странице поочерёдно значения из массива? Newcomer27 PHP 1 08.03.2013 04:14
Сравнить два ассоциативных массива и вывести одинаковые значения. livesport PHP 1 20.10.2012 15:10