2014-10-20 3 views
0

Я работаю с моим кодом, который позволит пользователю вводить слово, и каждая буква слова даст смысл.array_rand wihout repeat in php

Пример: Пользователь вводит текст «APPLE». Выход:

A - arc 
P - priest 
P - president 
L - lion 
E - escape 

Смысл каждого письма будет в массиве ..

У меня уже есть мой код здесь, но смысл повторяются.

Пример:

A - **Arrow** 
L - Love 
A - **Arrow** 
S - Soul 

Вот мой код

<?php 
$chars = str_split("APPLE"); 
foreach($chars as $char){ 
    if (substr($char, 0, 1) === 'A') 
    { 
    $meaning = array("Angel","Ancient","Arrow"); 
    echo $meaning[array_rand($meaning)]; 
    } 
} 
?> 

ответ

0

Вы можете временно отключить его в цикле, чтобы вы не получили дубликатов. Пример:

0

Вы можете сохранить "кэш" массив ранее используемых терминов. Пример:

<?php 
$chars = str_split("APPLE"); 
$used_terms = array(); 
foreach($chars as $char){ 
    if (substr($char, 0, 1) === 'A') { 
     $meaning = array("Angel","Ancient","Arrow"); 
     do { 
      $term = $meaning[array_rand($meaning)]; 
     } while (in_array($term, $used_terms)); 
     $used_terms[] = $term; 

     echo $term; 
    } 
} 
?> 
+0

Не работает. Он ничего не отображает –

+0

Неплохо, это должен быть цикл while-while. Обновлено. – casraf

+0

Хотя, метод unset by @Ghost более эффективен :) – casraf