Отметьте или отметьте числовое значение c в PHP, если это 10-е число из массива чисел - PullRequest
1 голос
/ 19 июня 2020

У меня есть массив в PHP с такими значениями

Array

([49] => Array ([Profile] => 0,01 [Value] => 220,3 [Display] => 0 )

[48] => Array
    (
        [Profile] => 0.02
        [Value] => 220.6
        [Display] => 0
    )

[47] => Array
    (
        [Profile] => 0.03
        [Value] => 220.9
        [Display] => 0
    )

[46] => Array
    (
        [Profile] => 0.04
        [Value] => 221.2
        [Display] => 0
    )

[45] => Array
    (
        [Profile] => 0.05
        [Value] => 221.5
        [Display] => 0
    )

[44] => Array
    (
        [Profile] => 0.06
        [Value] => 221.8
        [Display] => 0
    )

[43] => Array
    (
        [Profile] => 0.07
        [Value] => 222.1
        [Display] => 0
    )

[42] => Array
    (
        [Profile] => 0.08
        [Value] => 222.4
        [Display] => 0
    )

[41] => Array
    (
        [Profile] => 0.09
        [Value] => 222.7
        [Display] => 0
    )

...

[41] => Array
    (
        [Profile] => 1.00
        [Value] => 222.7
        [Display] => 0
    )

)

Теперь в foreach

foreach ($grid as &$gridData) {
    $gridData['Display'] = is_grid_profile_10th_step ? 1 : 0;
}

Я хочу от 10 до 10 шагов в этом массиве, чтобы установить [Display] => 1 так, чтобы значения

0.1
0.2
0.3
...
0.9
1.0

отметить [Display].

Уже пробовал:

$gridData['Display'] = ($gridData['Profile'] * 10) % 10 == 0 ? 1 : 0; - у меня не сработало

$gridData['Display'] = is_int($gridData['Profile'] * 10) ? 1 : 0; - тоже не сработало

но это сделал: $gridData['Display'] = intval($gridData['Profile'] * 10) == ($gridData['Profile'] * 10) ? 1 : 0;

У меня такое чувство, что должен быть более элегантный способ сделать это в PHP.

Есть предложения? Спасибо.

1 Ответ

0 голосов
/ 19 июня 2020

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

// round to 1 decimal
$rounded = round($gridData['Profile'], 1); 

// Now check if the round changed the original value, if so, it was not
// a thenth number
$gridData['Display'] = $rounded == $gridData['Profile'] ? 1 : 0;
...