2012-10-22 49 views
-2

這就是問題所在:如何找到一個關聯數組的最低數量

我有以下陣列(從$wpdb->get_results()):

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" 
    } 
} 

而且我想找到10000的最小整在這不是在這個數組中。在這種情況下,答案將是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

嗨亞歷克斯,從我讀的,這與我所尋找的非常接近!不幸的是,我可以測試它,因爲當我運行array_walk時出現錯誤消息。我使用PHP 5.2.6,我不知道這是否可以解釋錯誤。 – user1232551

+0

更新了使用PHP的代碼<5.3 – Alex

+0

這就是真棒。你做了我的一天,亞歷克斯。非常感謝你。 – user1232551

相關問題