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
Care tag se foloseste in <table> pentru a crea celula de tip "header"?
<thead> <th> <td>
<table><tr>
  <th>Title 1</th>
  <th>Title 2</th>
</tr></table>
Ce proprietate CSS seteaza distanta dintre randuri?
line-height word-spacing margin
.some_class {
  line-height: 150%;
}
Care functie deschide o noua fereastra.
alert() confirm() open()
document.getElementById("id_button").onclick = function(){
  window.open("http://coursesweb.net/");
}
Indicati functia PHP care returneaza un array cu numele fisierelor si directoarelor dintr-un director.
mkdir() scandir() readdir()
$ar_dir = scandir("dir_name");
var_export($ar_dir);
Care din urmatoarele forme a verbului "sleep" (a dormi) se foloseste pentru viitor?
sleeping slept will sleep
He will sleep there.
- El va dormi acolo.
Care din urmatoarele forme a verbului "dormir" (a dormi) se foloseste pentru viitor?
dormido dormirá durmiendo
Él dormirá allí.
- El va dormi acolo.
Obtine numarul cel mai apropiat, imediat mai mic si mai mare

Last accessed pages

  1. Conditional IF in Limba Engleza - Fraze Conditionale (32395)
  2. Prezent perfect si Prezent perfect continuu - Present perfect and Continuous (29375)
  3. Curs HTML gratuit Tutoriale HTML5 (26439)
  4. Expediere date la o adresa de e-mail (910)
  5. Data si Ora in engleza - Date and Time (6434)

Popular pages this month

  1. Gramatica limbii engleze - Prezentare Generala (2961)
  2. Conditional IF in Limba Engleza - Fraze Conditionale (2819)
  3. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (1795)
  4. Curs HTML gratuit Tutoriale HTML5 (1687)
  5. Creare si editare pagini HTML (1528)