2017-05-14 1 views
0

특정 패턴을 생성하여 주어진 두 숫자 사이의 숫자 범위를 설명하는 함수를 만들려고합니다. 이 함수는 $startNumber$endNumber의 두 매개 변수를 허용합니다. 패턴 문자열의 배열을 반환해야합니다. ...주어진 시작 번호와 끝 번호에서 숫자 범위에 대한 특정 패턴을 만듭니다.

myfunction(00000, 99999)  = array('*'); 
myfunction(10000, 29999)  = array('1*', '2*'); 
myfunction(68000, 68999)  = array('68*'); 
myfunction(0004000, 0008999) = array('0004*', '0005*', '0006*', '0007*', '0008*'); 
myfunction(5570000, 5659999) = array('557*', '558*', '559*', '560*', '561*', '562*', '563*', '564*', '565*'); 
myfunction(3760000, 5259999) = array('376*', '377*', '378*', '379*', '38*', '39*', '4*', '50*', '51*', '520*', '521*', '522*', '523*', '524*', '525*'); 
myfunction(12345, 45678)  = array('12345*', '12346*', '12347*', '12348*', '12349*', '1235*', '1236*', '1237*', '1238*', '1239*', '124*', '125*', '126*', '127*', '128*', '129*', '13*', '14*', '15*', '16*', '17*', '18*', '19*', '2*', '3*', '40*', '41*', '42*', '43*', '44*', '450*', '451*', '452*', '453*', '454*', '455*', '4560*', '4561*', '4562*', '4563*', '4564*', '4565*', '4566*', '45670*', '45671*', '45672*', '45673*', '45674*', '45675*', '45676*', '45677*', '45678*'); 
myfunction(000000, 399099) = array('0*', '1*', '2*', '30*', '31*', '32*', '33*', '34*', '35*', '36*', '37*', '38*', '390*', '391*', '392*', '393*', '394*', '395*', '396*', '397*', '398*', '3990*'); 
+0

문제가 명확하지 않고 목적이 무엇이며 myfunction (00000, 99999)이 1을 2로 반환하는 이유는 무엇입니까 ?? 그건 이해가 안돼 ... 당신의 예제에서 regexes의 요점은 무엇입니까? – MTroy

+0

함수의 목적은 숫자 범위와 일치하는 패턴을 데이터베이스에 저장하는 것입니다. 그것은 전화 통신 응용 프로그램에 대한 및 불행히도 나는 패턴 형식을 수정할 수 없습니다. 전형적인 정규식이 아니며 일부 타사 API를 맞추기 위해이 형식을 유지해야한다는 것을 알 수 있습니다. 또한 00000에서 99999까지의 범위는 위의 예와 마찬가지로 1에서 2가 아니라 별표 만 반환해야합니다. 그건 그렇고, 당신의 대답에 대해 대단히 감사합니다, 나는 그것을 곧 검토 할 것입니다. –

+0

설명에 추가하려면 패턴이 특정 통신 회사에 할당 된 숫자 범위와 일치해야합니다. 때로는 범위에 수십만 또는 수백만 개의 숫자가 있기 때문에 모든 것을 개별적으로 저장하는 대신 패턴은 내가 제공 한 형식으로 사용됩니다. –

답변

0

문제의 일부가 명확하지 때문에, 당신이 주장하는 최초의 필요에 가까운거야 범위에 대한

: 그것을 설명하는 가장 좋은 방법은 예제입니다

당신은 range() 기본 기능에 대한 기존 ;-)

봐 코딩 할 필요가 없습니다, 이미 할 수있는 당신을 위해 :

function myfunction($start, $end) 
{ 
    $r = range($start, $end); 
    return array_map(function($n) 
    { 
     return $n.'*'; 
    }, $r); 
} 


var_dump(myfunction(34, 39)); 
// will output: 

array(6) { 
    [0]=> 
    string(3) "34*" 
    [1]=> 
    string(3) "35*" 
    [2]=> 
    string(3) "36*" 
    [3]=> 
    string(3) "37*" 
    [4]=> 
    string(3) "38*" 
    [5]=> 
    string(3) "39*" 
} 
관련 문제