このスクリプトは、配列内の要素を選択して出力します。
<?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(): 2 番目の引数は、1 から配列内の要素数の間でなければなりません
Notice: 未定義のインデックス: in
Notice: 未定義のインデックス: 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);
}
?>