2015-12-04 30 views
2

這是我的數組:如何打印數組的最低鍵?

array(4) { 
     ["1"]=> 
     array(3) { 
     [0]=> 
     string(2) "01" 
     [1]=> 
     string(2) "02" 
     [2]=> 
     string(2) "03" 
     } 
     ["2"]=> 
     array(2) { 
     [0]=> 
     string(2) "01" 
     [1]=> 
     string(2) "02" 
     } 
     ["3"]=> 
     array(1) { 
     [0]=> 
     string(2) "01" 
     } 
     ["4"]=> 
     array(1) { 
     [0]=> 
     string(2) "01" 
     } 
    } 

我想打印的最低關鍵,但僅從按鍵,具有小於3倍的值。

echo min(array_keys($myarray)); 

給我的結果:1

但關鍵1已經有3個值,所以結果我需要爲2。在每個鍵有3個值,然後打印下一個關鍵的情況下(這案件將是5)

我不知道如何做到這一點。我很高興爲每一個提示或建議。

+6

'echo min(array_keys(array_filter($ myarray,function($ value){return count($ value)<3; })));' –

+0

@MarkBaker:謝謝Mark,這個工作很完美。 array_filter是一個很好的建議! – Jarla

+0

你不需要最低的鑰匙,但是價值最高的鑰匙就是最小的鑰匙。 –

回答

2

此函數迭代您的數組並查找具有小於3值的所有鍵。它將返回找到的第一個,如果沒有找到,則返回下一個鍵。

function getLowestKeyWithLessThan($yourArray, $number=3) 
{ 
    foreach ($yourArray as $key => $value) { 
     if (count($value) < $number) 
      return $key; 
    } 
    return count($yourArray) + 1; 
} 

如果我運行下面幾行:

print "Answer " . getLowestKeyWithLessThan($yourArray); 
print "\nAnswer " . getLowestKeyWithLessThan($AllKeysHasThreeElements); 

這給出了答案:

 
Answer 2 
Answer 5 

這裏是我用來測試這個數據:

$yourArray = array(
    "1"=> array(
     '0' => "01", 
     '1' => "02", 
     '2' => "03", 
    ), 
    "2"=> array(
     '0' => "01", 
     '1' => "02", 
    ), 
    "3"=> array(
     '0' => "01", 
    ), 
    "4"=> array(
     '0' => "01", 
    ), 
); 

$threeValues = array(
    '0' => "01", 
    '1' => "02", 
    '2' => "03", 
); 

$AllKeysHasThreeElements = array(
    "1"=> $threeValues, 
    "2"=> $threeValues, 
    "3"=> $threeValues, 
    "4"=> $threeValues, 
); 

當然,數據也可以像th一樣寫是:

$threeValues = array("01", "02", "03"); 
$yourArray = array($threeValues, array("01", "02"), array("01"), array("01")); 
$AllKeysHasThreeElements = array($threeValues,$threeValues,$threeValues,$threeValues);