2013-11-23 218 views
0

該腳本挑選數組內的元素並將其打印出來。更好的解決方案?

<?php 
    $word = array("THE", "QUICK", "BROWN", "FOX", "JUMPS"); 
    $rand_keys = array_rand($word, 2); 
    echo $word[$rand_keys[0]]; 
    echo $word[$rand_keys[1]]; 
?> 

它的工作原理,但我使用一些功能

和array_diff();

,其對從$word可變我的腳本檢索和從元素列表中刪除 例如:

$字=陣列( 「THE」, 「快」, 「棕色」, 「FOX」 ,「JUMPS」);

$ sentence = array(「QUICK」,「BROWN」);

$ input = array_diff($ word,$ sentence);

所以$input是包含array("THE", "FOX", "JUMPS");對不對?

,我申請到腳本像這樣:

<?php 
    $word = array("THE", "QUICK", "BROWN", "FOX", "JUMPS"); 
    $sentence = array("QUICK", "BROWN"); 
    $input = array_diff($word, $sentence); 
    $rand_keys = array_rand($input, 2); 
    echo $input[$rand_keys[0]]; 
    echo $input[$rand_keys[1]]; 
?> 

它也適用,因爲它包含在陣列上3個元素。如果我做更多的過濾

$輸入

變量只包含一個元素比如:$input只包含array("BROWN");腳本將不再運行,並得到這樣的錯誤:

警告:array_rand():第二個參數必須在1到 數組中元素的數量

注意:未定義指數:在

說明:未定義指數:在

我怎樣才能運行腳本如果只有包含數組元素?

我來了這麼遠,它的工作原理,但有沒有更好的解決方案?

<?php 
$word = array("THE", "QUICK", "BROWN", "FOX", "JUMPS"); 

if(count($input) >= 2) 
{ 
    $rand_keys = array_rand($input, 2); 
    echo $input[$rand_keys[0]] . "\n"; 
    echo $input[$rand_keys[1]] . "\n"; 
} 
else 
{ 
    echo end($input); 
} 
?> 
+0

這個腳本的目標是什麼;即你最終的輸出是什麼?嘗試從長度爲1的數組中選擇隨機鍵沒有任何意義。 – cori

+0

最終輸出是我想讓腳本一直運行,當我過濾像它只包含1個元素我顯示最後一個元素沒有錯誤 – Destiny

回答

1

錯誤信息簡單易懂。在array_rand()的第二個參數中,您不能使用大於元素數的數字。

在調用此函數之前,請檢查元素的數量,如果它只有一個,請在不調用array_rand()的情況下使用此元素。當你沒有任何元素時,也要準備好情況。

+0

我回答了我的問題,做了你告訴我有沒有其他更好的解決方案?像使用循環? – Destiny

+0

@Destiny不要使用循環的東西,你可以檢查一個如果。 –

相關問題