O functie ce returneaza numarul cel mai apropiat, imediat mai mic si mai mare. Aceasta functie, closestLowerHigherNr(), primeste doi parametri: un array cu numere, si numarul. Compara acel numar cu numerele din array, apoi returneaza un array asociativ cu trei elemente: numarul imediat mai mic ('lower'), numarul imediat mai mare ('higher'), si cel mai apropiat numar ('closest').ay, than returns an associative array with the "lower", "higher", and "closest" number.
<?php
// returneaza un array cu numerele din $array imediat mai mic, mai mare si cel mai apropiat de $nr
function closestLowerHigherNr($array, $nr) {
  // Curs PHP-MySQL - https://marplo.net/php-mysql/
  sort($array);      // sorteaza array-ul cu numerele in ordine crescatoare

  // seteaza array-ul care va fi returnat, initial cu numerele cel mai mare, cel mai mic din $array, si $nr
  $re_arr = array('lower'=>min(current($array), $nr), 'higher'=>max(end($array), $nr), 'closest'=>$nr);

  // parcurge numerele, retine in $re_arr numerele imediat mai mic, mai mare, cel mai apropiat
  foreach($array AS $num){
    if($nr > $num) $re_arr['lower'] = $num;
    else if($nr <= $num){
      // daca numarul curent din $array e egal cu $nr, sau imediat mai mare, retine acel numar
      // si opreste instructiunea foreach()
      $re_arr['higher'] = $num;
      break;
    }
  }

  // aici se obtine cel mai apropiat numar de $nr
  // (numarul ('lower' or 'higher') cu cea mai mica diferenta fata de $nr)
  $re_arr['closest'] = (abs($nr - $re_arr['lower']) < abs($re_arr['higher'] - $nr)) ? $re_arr['lower'] : $re_arr['higher'];

  return $re_arr;
}

// Exemplu
$numbers = array(-8, -3, 0, 5.8, 12, 9, 2.1);

// apeleaza functia cu trei numere pt test
$test1 = closestLowerHigherNr($numbers, -6);
$test2 = closestLowerHigherNr($numbers, 3);
$test3 = closestLowerHigherNr($numbers, 9);

// verifica valorile din $test1, $test2, $test3
var_export($test1);       // array ( 'lower' => -8, 'higher' => -3, 'closest' => -8 )
var_export($test2);       // array ( 'lower' => 2.1, 'higher' => 5.8, 'closest' => 2.1 )
var_export($test3);       // array ( 'lower' => 5.8, 'higher' => 9, 'closest' => 9 )
?>
Aceasta functie e buna si in cazul in care $nr este mai mic, sau mai mare decat oricare numar din $array.
Exemplu:
<?php
// Aici se adauga functia closestLowerHigherNr()

$numbers = array(-8, 2, 12);
$test4 = closestLowerHigherNr($numbers, -23);      // -23 e mai mic decat oricare numar din $numbers
$test5 = closestLowerHigherNr($numbers, 18);       // 18 e mai mare decat oricare numar din $numbers

// verifica valorile din $test4, $test5
var_export($test4);       // array ( 'lower' => -23, 'higher' => -8, 'closest' => -23 )
var_export($test5);       // array ( 'lower' => 12, 'higher' => 18, 'closest' => 18, )
?>

- Iata si un exemplu practic de utilizare a functiei closestLowerHigherNr(). Obtine directia cardinala (Nord, Est, Sud-Est, etc.) in functie de o valoare aleatoare in grade de cerc.
<?php
// Aici se adauga functia closestLowerHigherNr()

// array cu graade de cerc si directia lor cardinala
$direction = array(0=>'Est',30=>'Est-Est-Nord',45=>'Nord-Est',60=>'Nord-Nord-Est',90=>'Nord',120=>'Nord-Nord-Vest',135=>'Nord-Vest',150=>'Vest-Vest-Nord',180=>'Vest',210=>'Sud-Vest-Vest',225=>'Sud-Vest',240=>'Sud-Sud-Vest',270=>'Sud',300=>'Sud-Sud-Est',315=>'Sud-Est',330=>'Sud-Est-Est');

$degrees = array_keys($direction);      // retine indexii / gradele intr-un array

// cateva directii (in grade de cerc)
$deg1 = 0;
$deg2 = 50;
$deg3 = 215;

// obtine array-ul in care e si numarul /indexul cel mai apropiata fiecarui grad
$drg1 = closestLowerHigherNr($degrees, $deg1);
$drg2 = closestLowerHigherNr($degrees, $deg2);
$drg3 = closestLowerHigherNr($degrees, $deg3);

// obtine directia cardinala apropiat pt fiecare grad (folosind cel mai apropiat numar)
$dtn1 = $direction[$drg1['closest']];
$dtn2 = $direction[$drg2['closest']];
$dtn3 = $direction[$drg3['closest']];

// test
echo "$deg1 grade = $dtn1";       // 0 grade = Est
echo "$deg2 grade = $dtn2";       // 50 grade = Nord-Est
echo "$deg3 grade = $dtn3";       // 215 grade = Sud-Vest-Vest
?>

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce tag adauga imagine in pagina web?
<div> <img> <span>
<img src="http://coursesweb.net/imgs/webcourses.gif" width="191" height="63" alt="Courses-Web" />
Care din aceste coduri CSS afiseaza textul inclinat?
font-style: italic; text-decoration: underline; font-weight: 500;
#id {
  font-style: italic;
}
Clic pe functia jQuery care ascunde animat un element HTML.
click() hide() show()
$(document).ready(function() {
  $(".a_class").click(function(){ $(this).hide("slow"); });
});
Clic pe functia definita corect in PHP.
fname function() {} function fname() {} function $fname() {};
function fname($a, $b) {
  echo $a * $b;
}
Indicati forma pentru Prezent Perfect Continuu a verbului "to walk" (a merge).
have walked have been walking be walking
I have been walking for 5 hours.
- Merg pe jos de 5 ore.
Indicati Trecutul Nedefinit pentru verbul "ser" (a fi) la forma Yo.
será sería fui
Yo fui entrenador.
- Am fost antrenor.
Obtine numarul cel mai apropiat, imediat mai mic si mai mare

Last accessed pages

  1. Baze de date SQL 2 (1178)
  2. Notiuni fundamentale despre bazele de date SQL (4870)
  3. Baze de date SQL 3 (597)
  4. MySQL JOIN, INNER, LEFT, RIGHT (694)
  5. Conditional IF in Limba Engleza - Fraze Conditionale (26346)

Popular pages this month

  1. Gramatica limbii engleze - Prezentare Generala (3028)
  2. Conditional IF in Limba Engleza - Fraze Conditionale (2179)
  3. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (2016)
  4. Curs HTML gratuit Tutoriale HTML5 (1322)
  5. Prezentul simplu si continuu - Present Tense Simple and Continuous (1322)