2015-04-17 3 views
0

У меня есть массив, заполненный различными высказываниями, и я пытаюсь вывести случайное одно из высказываний. Моя программа печатает случайное высказывание, но иногда оно печатает имя переменной, которое присваивается высказыванию, а не фактическое высказывание, и я не уверен, почему.Php array_rand() имя переменной печати

$foo=Array('saying1', 'saying2', 'saying3'); 
$foo['saying1'] = "Hello."; 
$foo['saying2'] = "World."; 
$foo['saying3'] = "Goodbye."; 

echo $foo[array_rand($foo)]; 

Так, например, он будет печатать мир как следует, но в других случаях он будет печатать say2. Не уверен, что я делаю неправильно.

ответ

0

Оставьте значения в начале. Измените первую строку на просто:

$foo = array(); 

То, что вы сделали, это положить значения «say1» и такие в массиве. Вам не нужны эти ценности. Вы также можете опустить значения индекса с помощью:

$foo[] = 'Hello.'; 
$foo[] = 'World.'; 

Это упрощает вашу работу.

0

Вы указали свой массив неверно в первой строке. Если вы хотите использовать массив в качестве ассоциативного массива:

$foo=Array('saying1' => array(), 'saying2' => array(), 'saying3' => array()); 

Или вы можете пойти на не ассоциативный стиль, заданный Kainaw.

Edit: Вызов этого на не ассоциативный массив:

echo("<pre>"); print_r($foo); echo("</pre>"); 

имеет в качестве вывода:

Array 
(
    [0] => saying1 
    [1] => saying2 
    [2] => saying3 
    [saying1] => Hello. 
    [saying2] => World. 
    [saying3] => Goodbye. 
) 
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)]; 
Смежные вопросы