更好的解决方

时间:2013-11-23 17:46:10

标签: php arrays random generate-scripts

此脚本选择数组内部的元素并打印它。

<?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变量并从元素列表中删除 例如:

  

$ word = array(“THE”,“QUICK”,“BROWN”,“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

变量只包含1个元素ex:$input仅包含array("BROWN");脚本将不再运行并出现如下错误:

  

警告:array_rand():第二个参数必须介于1和之间   

中数组中的元素数量      

注意:未定义的索引:在

中      

注意:未定义的索引:在

如果数组元素只包含 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);
}
?>

1 个答案:

答案 0 :(得分:1)

错误信息简单易懂。您不能在array_rand()的第二个参数中使用大于元素数的数字。

在调用此函数之前,检查元素的数量,如果它只是一个,请在不调用array_rand()的情况下使用此元素。当你没有任何元素的时候也要做好准备。