| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- <?php
- function fill($data = [], $count = 1){
- //$data = [];
- foreach ($data as $key => $value){
- if($key != 0) {
- unset($data[$key]);
- $data[$key - 1] = $value;
- }else unset($data[$key]);
- }
- for($i=0; $i<=$count-1; $i++){
- if(empty($data[$i])){
- $data[$i] = 0 ;
- }else $data[$i] *= 1 ;
- }
- ksort($data);
- return $data;
- }
- function fillCount($count = 1){
- $array = [];
- for($i=0; $i<=$count-1; $i++){
- $array[$i] = $i+1;
- }
- return $array;
- }
- function countDayInMonth($dataProvider){
- return cal_days_in_month(
- CAL_GREGORIAN,
- isset(explode('.', $dataProvider->month)[1]) ? explode('.', $dataProvider->month)[1] : 1,
- isset(explode('.', $dataProvider->month)[0]) ? explode('.', $dataProvider->month)[0] : 1
- );
- }
- /* @return \app\models\user*/
- function user()
- {
- return Yii::$app->user;
- }
- /* @return \app\models\User*/
- function identity($autorenew = false)
- {
- return Yii::$app->user->getIdentity($autorenew);
- }
- function getValue($data, $name, $default = null)
- {
- return \yii\helpers\ArrayHelper::getValue($data, $name, $default);
- }
- /**
- * Возвращает сумму прописью
- * @author mxuser
- * @uses morph(...)
- * @param float|int $num
- * @return string
- */
- function num2str($num)
- {
- $nul = 'ноль';
- $ten = array(
- array('', 'одна', 'дві', 'три', 'чотири', 'п\'ять', 'шість', 'сім', 'вісім', 'дев\'ять'),
- array('', 'одна', 'дві', 'три', 'чотири', 'п\'ять', 'шість', 'сім', 'вісім', 'дев\'ять'),
- );
- $a20 = array('десять', 'одинадцять', 'дванадцать', 'тринадцять', 'чотирнадцять', 'п\'ятнадцять', 'шістнадцять', 'сімнадцять', 'вісімнадцять', 'дев\'ятнадцять');
- $tens = array(2 => 'двадцять', 'тридцять', 'сорок', 'п\'ятьдесят', 'шістьдесят', 'сімдесят', 'вісімдесят', 'дев\'яносто');
- $hundred = array('', 'сто', 'двісті', 'триста', 'чотириста', 'п\'ятьсот', 'шістьсот', 'сімсот', 'вісімсот', 'дев\'ятьсот');
- $unit = array( // Units
- array('цент', 'цента', 'центів', 1),
- array('долар', 'долари', 'доларів', 0),
- array('тисяча', 'тисячі', 'тисяч', 1),
- array('мільйон', 'мільйони', 'мільйонів', 0),
- array('мільярд', 'мільярди', 'мільярдів', 0),
- );
- //
- list($rub, $kop) = explode('.', sprintf("%015.2f", floatval($num)));
- $out = array();
- if (intval($rub) > 0) {
- foreach (str_split($rub, 3) as $uk => $v) { // by 3 symbols
- if (!intval($v)) continue;
- $uk = sizeof($unit) - $uk - 1; // unit key
- $gender = $unit[$uk][3];
- list($i1, $i2, $i3) = array_map('intval', str_split($v, 1));
- // mega-logic
- $out[] = $hundred[$i1]; # 1xx-9xx
- if ($i2 > 1) $out[] = $tens[$i2] . ' ' . $ten[$gender][$i3]; # 20-99
- else $out[] = $i2 > 0 ? $a20[$i3] : $ten[$gender][$i3]; # 10-19 | 1-9
- // units without rub & kop
- if ($uk > 1) $out[] = morph($v, $unit[$uk][0], $unit[$uk][1], $unit[$uk][2]);
- } //foreach
- } else $out[] = $nul;
- $out[] = morph(intval($rub), $unit[1][0], $unit[1][1], $unit[1][2]); // rub
- $out[] = $kop . ' ' . morph($kop, $unit[0][0], $unit[0][1], $unit[0][2]); // kop
- return trim(preg_replace('/ {2,}/', ' ', join(' ', $out)));
- }
- function morph($n, $f1, $f2, $f5)
- {
- $n = abs(intval($n)) % 100;
- if ($n > 10 && $n < 20) return $f5;
- $n = $n % 10;
- if ($n > 1 && $n < 5) return $f2;
- if ($n == 1) return $f1;
- return $f5;
- }
- function app()
- {
- return \Yii::$app;
- }
- /* @return \app\components\Templater */
- function templater()
- {
- return app()->templater;
- }
- function DMF($val = ''){
- var_dump($val);
- die();
- }
|