我有一个充满不同语句的数组,我试图输出随机的一个说法。我的程序打印出随机的说法,但有时会打印出分配给说法而不是实际说法的变量名称,我不知道为什么。
$foo=Array('saying1', 'saying2', 'saying3');
$foo['saying1'] = "Hello.";
$foo['saying2'] = "World.";
$foo['saying3'] = "Goodbye.";
echo $foo[array_rand($foo)];
因此,例如它将打印出应该的世界,但有时它会打印出来2。不确定我做错了什么。
答案 0 :(得分:0)
在开始时删除值。将第一行更改为:
$foo = array();
你所做的是把价值观和说法1'在数组中。你不想要那些价值观。您也可以使用以下内容删除索引值:
$foo[] = 'Hello.';
$foo[] = 'World.';
这简化了你的工作。
答案 1 :(得分:0)
您在第一行以错误的方式声明了数组。 如果要将数组用作关联数组:
$foo=Array('saying1' => array (), 'saying2' => array(), 'saying3' => array());
或者你可以选择Kainaw给出的非联想风格。
编辑:在非关联数组上调用它:
echo("<pre>"); print_r($foo); echo("</pre>");
输出:
Array
(
[0] => saying1
[1] => saying2
[2] => saying3
[saying1] => Hello.
[saying2] => World.
[saying3] => Goodbye.
)
答案 2 :(得分:0)
在@Answers_Seeker所说的基础上,为了让你的代码以你期望的方式工作,你必须使用以下方法之一重新声明和初始化你的数组:
$foo=array('saying1'=>'Hello.', 'saying2'=>'World.', 'saying3'=>'Goodbye.');
或者这个:
$foo=array();
$foo['saying1'] = "Hello.";
$foo['saying2'] = "World.";
$foo['saying3'] = "Goodbye.";
然后,随机打印内容:
echo $foo[array_rand($foo)];