2010-04-19 4 views
0

Мой Javascript разве так велик, но я нашел блестящую функцию глядя hereпомощь при преобразовании функции яваскрипта в PHP

я не уверен, что делать с этим битом:

var ranges = [], rstart, rend; 

полной функции:

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

В нем нет ничего конкретного JS, это почти то же самое в PHP. Все переменные должны начинаться с '$', инициализация массива - 'array()', 'array.length' переводит в' count ($ array) ',' array.push' либо '$ array [] =' или ' array_push ($ array, $ value) 'и конкатенация идет с' .' вместо '+'. –

+1

С какими частями вы столкнулись с проблемой? Это место, где можно получить помощь в программировании. Не получить свободный труд. – webbiedave

+0

Я был смущен этим битом, в частности: var range = [], rstart, rend; – Haroldo

ответ

2

Это почти точно то же самое в 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

... или, возможно, это место для этого. – webbiedave

+1

Да, я думал о том, чтобы не отвечать, но иногда это помогает кому-то описать это для вас пару раз, когда вы новичок. Мне было не так много «работы», найти и заменить имена переменных «$» infront и заменить «+» на «.». в нескольких местах. –

+0

Спасибо Остин, очень любезно с вашей стороны, чтобы не торопиться, я буду уверен, что буду меньше лениться с вопросами в будущем! Еще раз спасибо – Haroldo

0

Просто для информации:

var ranges = [], rstart, rend; 

просто объявляет три переменные ranges, rstart и rend. ranges также инициализируется как пустой массив.
Это то же самое, как

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

В PHP вы не обязательно должны заранее объявлять переменные.

+0

ah хорошо, это имеет смысл сейчас, спасибо Феликс – Haroldo