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]];
?>

它有效,但我正在使用一些功能

数组差异();

在我的脚本中从$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 个元素。如果我做更多的过滤

$输入

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

警告:array_rand():第二个参数必须介于 1 和数组中的元素数之间

注意:未定义索引:in

注意:未定义索引:in

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

1 回答 1

1

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

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

于 2013-11-23T17:49:28.020 回答