2010-04-19 5 views
0

Mon javascript ny a pas si grand, mais j'ai trouvé une fonction brillante recherche hereaide à la conversion fonction javascript php

Je ne suis pas sûr de ce qu'il faut faire avec ce bit:

var ranges = [], rstart, rend; 

fonctions:

function getRanges(array) { 
    var ranges = [], rstart, rend; 
    for (var i = 0; i < array.length; i++) { 
    rstart = array[i]; 
    rend = rstart; 
    while (array[i + 1] - array[i] == 1) { 
     rend = array[i + 1]; // increment the index if the numbers sequential 
     i++; 
    } 
    ranges.push(rstart == rend ? rstart+'' : rstart + '-' + rend); 
    } 
    return ranges; 
} 

getRanges([2,3,4,5,10,18,19,20]); 
// returns ["2-5", "10", "18-20"] 
getRanges([1,2,3,5,7,9,10,11,12,14 ]); 
// returns ["1-3", "5", "7", "9-12", "14"] 
getRanges([1,2,3,4,5,6,7,8,9,10]) 
// returns ["1-10"] 
+4

Il n'y a rien de vraiment spécifique à JS, c'est presque le même en PHP. Toutes les variables doivent commencer par '$', l'initialisation du tableau est 'array()', 'array.length' se traduit par' count ($ array) ',' array.push' est soit '$ array [] =' ou ' array_push ($ array, $ value) 'et la concaténation va avec' .' au lieu de '+'. –

+1

Avec quelles parties avez-vous des problèmes? C'est un endroit pour obtenir de l'aide avec votre programmation. Ne pas avoir de travail libre. – webbiedave

+0

J'ai été troublé par ce bit, en particulier: var ranges = [], rstart, rend; – Haroldo

Répondre

2

C'est presque exactement la même chose en PHP.

<?php 

function getRanges($array){ 
    $ranges = array(); 
    for($i = 0; $i < count($array); $i++){ 
     $rstart = $array[$i]; 
     $rend = $rstart; 
     while($array[$i + 1] - $array[$i] == 1){ 
      $rend = $array[$i + 1]; //incremenent the index if sequential 
      $i++; 
     } 
     $ranges[] = ($rstart == $rend) ? $rstart.'' : $rstart . '-' . $rend; 
    } 
    return $ranges; 
} 

var_dump(getRanges(array(2,3,4,5,10,18,19,20))); 
/* 
array(3) { 
    [0]=> 
    string(3) "2-5" 
    [1]=> 
    string(2) "10" 
    [2]=> 
    string(5) "18-20" 
} 
*/ 

?> 
+2

... ou peut-être que c'est un endroit pour cela.) – webbiedave

+1

Ouais, je pensais ne pas répondre mais parfois Cela m'aide à avoir quelqu'un pour vous épeler quelques fois quand vous êtes nouveau.C'était pas beaucoup de "travail" pour moi, trouver et remplacer les noms de variables avec un "$" infront et remplacer "+" par "." dans quelques endroits –

+0

Merci Austin, très gentil à vous de prendre le temps je serai sûr d'être moins paresseux avec des questions à l'avenir! merci encore – Haroldo

0

Pour votre information:

var ranges = [], rstart, rend; 

déclare que trois variables ranges, rstart et rend. ranges est également initialisé en tant que tableau vide.
Il est le même que

var ranges = []; 
var rstart; 
var rend; 

En PHP, vous ne devez pas nécessairement déclarer les variables à l'avance.

+0

ah ok, ça a du sens maintenant, merci felix – Haroldo