2015-10-26 3 views
0

У меня есть этот массив:PHP: array_rand массивы

$nonTerminals = array("S","A","B"); 
$grammar = array(
"$nonTerminals[0]" => "aA", 
"$nonTerminals[1]" => array("aA","bB"), 
"$nonTerminals[2]" => array("bB","b") 
); 

и я использую это для случайных величин:

$rand_keys = array_rand($grammar, 2); 
echo $grammar[$rand_keys[0]] . "\n"; 

Но это неправильно, потому что это дает мне некоторые ошибки.

+1

Вы можете разместить ошибки вы получаете? Потому что теперь, из того, что я вижу, вы пытаетесь эхо-массива. –

+1

И эти ошибки? –

+3

Если выбрано второе или третье, вы пытаетесь эхо-массива, возможно, «Обратите внимание: массив для преобразования строк». – AbraCadaver

ответ

1

Вы можете сделать это следующим образом:

$nonTerminals = array("S","A","B"); 
$grammar = array(
"$nonTerminals[0]" => "aA", 
"$nonTerminals[1]" => array("aA","bB"), 
"$nonTerminals[2]" => array("bB","b") 
); 

$rand_keys = array_rand($grammar, 2); 
if (!is_array($grammar[$rand_keys[0]]) { 
    //This checks if the value is an array or not. 
    echo $grammar[$rand_keys[0]]; 
} 
else { 
    //it is an array, so echo a random value from that array; 
    echo $grammar[$rand_keys[0]][rand(0, 1)]; 
} 
+0

Спасибо большое !!! –

+0

Нет проблем :-) Не забудьте принять ответ;) –

+0

done . еще раз спасибо ! –

Смежные вопросы