2012-10-22 5 views
-2

이 문제입니다는 연관 배열에서 가장 낮은 번호를 찾는 방법

array(6) { 
    [0]=> array(1) { 
     [0]=> string(7) "1102006" 
    } 
    [1]=> array(1) { 
     [0]=> string(7) "1102006" 
    } 
    [2]=> array(1) { 
     [0]=> string(7) "8092007" 
    } 
    [3]=> array(1) { 
     [0]=> string(8) "23062012" 
    } 
    [4]=> array(1) { 
     [0]=> string(8) "29072000" 
    } 
    [5]=> array(1) { 
     [0]=> string(8) "30082008" 
    } 
} 

그리고 10,000에서 최소의 정수를 찾을 싶습니다 이 배열에 없습니다. 이 경우 배열에 10,000이 없으므로 응답은 10,000입니다.

감사합니다.

+0

당신의 결과를 추가 할 계획이 아니라면 대답은 항상 10000 될 것이다 그 배열에이 함수. 그럴까요? – Alex

+0

1 단계에서 대답은 10,000입니다.이 결과로 사용자는 기본 10,000 또는 선호하는 다른 번호를 선택할 수 있습니다. 그런 다음 2 단계에서 다른 사용자가 같은 결정에 직면하게 될 것입니다. 내 문제는 알고리즘에 '말하는'방법을 모른다는 것입니다. – user1232551

답변

0

이것은 사용자의 질문을 해석 한 방법입니다.

10000부터 시작하여 데이터 배열 내에없는 첫 번째 사용 가능한 번호를 찾습니다. 당신은 그냥 배열의 최소 값 뒤에 경우

<?php 

$data = array(
    array('1102006'), 
    array('1102006'), 
    array('8092007'), 
    array('23062012'), 
    array('29072000'), 
    array('30082008') 
); 

// flatten the array to a single dimension 
function flatten(&$v) { $v = $v[0]; } 

array_walk($data, 'flatten'); 

// minimum number 
$num = 10000; 

// while a value has not been found 
while (!isset($value)) 
{ 
    // check if the current number is in our data (exclusion list) 
    if (array_search($num, $data) === false) 
     $value = $num; 

    // increment for our next search 
    $num++; 
} 

echo $value; 

는, 이전의 대답에 배열을 평평하고 사용 min :

echo min($data); 
+0

안녕하세요, Alex, 내가 읽은 것에서 , 이것은 내가 찾고있는 것과 아주 가깝습니다! 불행히도 array_walk를 실행할 때 오류 메시지가 나타나면 테스트 할 수 있습니다 .. PHP 5.2.6을 사용하고 있는데이 코드가 오류를 설명 할 수 있는지 알 수 없습니다 .. – user1232551

+0

PHP <5.3 – Alex

+0

으로 작업하도록 코드가 업데이트되었습니다. 굉장해. 너는 내 하루를 보냈다, 알렉스. 고맙습니다. – user1232551

관련 문제