Każda z poniższych funkcji na wejściu przyjmuje numer (w większości przypadków może on zawierać także spacje lub myślniki) a zwraca TRUE
lub FALSE
w zależności od tego czy numer jest poprawny czy też nie. Żadna filozofia.
Miesiąc: wrzesień 2014
Warto zerknąć – pogrupowane tematycznie i technologicznie artykuły od podstaw aż do dość specyficznych zastosowań dotyczące m. in. CSS, HTML5, SVG czy JavaScriptu — http://demosthenes.info/blog
Prosta funkcja w JS do odmiany liczebników. Do tej pory najczęściej korzystałem z wersji PHPowej, ale zaszła konieczność użycia również po stronie klienta…
var num = function (value, numerals, wovalue) {
var t0 = value % 10,
t1 = value % 100,
vo = [];
if (wovalue !== true)
vo.push(value);
if (value === 1 && numerals[1])
vo.push(numerals[1]);
else if ((value == 0 || (t0 >= 0 && t0 <= 1) || (t0 >= 5 && t0 <= 9) || (t1 > 10 && t1 < 20)) && numerals[0])
vo.push(numerals[0]);
else if (((t1 < 10 || t1 > 20) && t0 >= 2 && t0 <= 4) && numerals[2])
vo.push(numerals[2]);
return vo.join(' ');
};
Użycie:
num(wartość, ["zero elementów", "jeden element", "dwa elementy"], [true = pominięcie wartości na wyjściu]);
Albo bardziej w "życiowej" postaci:
num(123, ["osób", "osoba", "osoby"]);
==> "123 osoby"
array_unpack
var array_unpack = function (array) {
if (array instanceof Array && array.length == 2)
return array_unpack_part(array.shift(), array.shift());
return false;
};
var array_unpack_part = function (av, ak) {
var o = {}, a = [], ia = true;
for (var vi = 0, vl = av.length; vi < vl; vi += 2) {
var t = av.slice(vi, vi + 2);
if (t[1] instanceof Array)
o[ak[t[0]]] = array_unpack_part(t[1], ak);
else
o[ak[t[0]]] = ak[t[1]];
}
for (var oi in o) {
if (!isNaN(parseInt(oi)) && isFinite(oi))
a[oi] = o[oi];
else
ia = false;
}
return ia ? a : o;
};
array_pack
public static function array_pack ($array, & $vs = null)
{
$in = $vs === null;
$as = null;
foreach ($array as $k => $v)
{
if (!isset($vs[$k]))
$vs[$k] = count($vs);
if (is_array($v))
{
$as[] = $vs[$k];
$as[] = self::array_pack($v, $vs);
}
else
{
if (!isset($vs[$v]))
$vs[$v] = count($vs);
$as[] = $vs[$k];
$as[] = $vs[$v];
}
}
return $in ? array($as, array_flip($vs)) : $as;
}
Napisana na własne potrzeby jak zwykle, prosta funkcja do zamiany wielowymiarowej tablicy na jej „spłaszczoną” postać.
function array_flat ($array, $key = '')
{
$output = array();
if (is_array($array))
{
foreach ($array as $k => $v)
if (is_array($v))
$output = array_merge($output, array_flat($v, $k . '.'));
else
$output[$key . $k] = $v;
}
return $output;
}
Reboot
Pora powrócić do pierwotnego zamysłu owego „bloga” z racji tego, że nigdy nie posiadałem umiejętności literackich a i pisanie o pierdołach już mnie jakoś nie kręci. Pora powrócić do pomysłu „pudełka na wycinki” – fragmentów kodów, podpowiedzi, linków do interesujących rozwiązań, tego wszystkiego o czym czasem zapominam a warto mieć do tego prosty dostęp…