изменить цвет, если слово выделено массивом в php - PullRequest
0 голосов
/ 23 марта 2020

Я работаю для php кода, это просто, я хочу показать 1 слово из Случайного слова для каждой строки в таблице и хочу изменить цвет.

     <?php
  $input = array(
    'Hi',    
    'Welcome',      
  );
  $rand_keys = array_rand($input, 2);

?>
  <b style='color:green;'><?php echo $input[$rand_keys[0]];?> </b>

  <b style='color:red;'><?php echo $input[$rand_keys[1]];?> </b>

Я хочу сделать одну вещь: если слово массива reslut = Привет, слово должно распечатываться зеленым цветом, если распечатка приветствия красным цветом

, пожалуйста, помогите мне, как это сделать>

Ответы [ 5 ]

0 голосов
/ 23 марта 2020

Так что, если вам действительно нужно случайное приветствие с соответствующим цветом для каждой строки таблицы, которую вы строите, то вам нужна функция, которая сможет выбрать случайную в любое время, когда вам это нужно. Чтобы получить случайную запись, мы будем использовать rand:

function getRandomGreeting(): string
{
    // we immediately define a color for each greeting
    // that way we don't need an if condition later comparing the result we got
    $greetings = [
        ['greeting' => 'Hi', 'color' => 'green'],
        ['greeting' => 'Welcome', 'color' => 'red'],
    ];
    /*
    Here we choose a random number between 0 (because arrays are zero-indexed)
    and length - 1 (for the same reason). That will give us a random index
    which we use to pick a random element of the array.

    Why did I make this dynamic?
    Why not just put 1 if I know indices go from 0 to 1?
    This way, if you ever need to add another greeting, you don't need
    to change anything in the logic of the function. Simply add a greeting
    to the array and it works!
     */
    $chosenGreeting = $greetings[rand(0, count($greetings) - 1)];

    return '<b style="color:'.$chosenGreeting['color'].';">'.$chosenGreeting['greeting'].'</b>';
}

А затем внутри вашей таблицы вам просто нужно вызвать функцию:

<td><?= getRandomGreeting() ?> [...other content of cell...]</td>

Обратите внимание, что <?= является сокращением для <?php echo.

0 голосов
/ 23 марта 2020

Вы можете использовать ассоциативный массив

<?php
    $input = array(
        'green' => 'Hi',    
        'red' => 'Welcome',      
    );
    $keys = array_keys($input); // Makes colors array: green and red
    shuffle($keys);// randomizes colors order
    foreach($keys as $color) {
        echo "<b style='color: $color;'>$input[$color]</b>"; 
    }
0 голосов
/ 23 марта 2020

Вы можете просто использовать сокращение if-else и повторить стиль для тега html следующим образом:

<b style='color: <?= in_array('Hi', $input) ? 'green' : 'red' ?>'><?= $input[$rand_keys[0]];?> </b>

синтаксис этого оператора:

condition ? true : false
0 голосов
/ 23 марта 2020

Я думаю, вы обнаружите, что с двумя элементами в вашем массиве array_rand будет не очень полезно. Попробуйте вместо этого использовать rand () и объединить с оператором if.
Вы можете попробовать это в php песочнице попробовать здесь :

<?php
  $input = array('Hi','Welcome');
  $index = rand(0,1);
  if($input[$index] == "Hi"){ ?> 
     <div style='color:green;'><?php echo $input[0]; ?> </div>
     <div style='color:red;'  ><?php echo $input[1]; ?> </div>
<?php }else if(1==1){?>
     <div style='color:blue;'><?php echo $input[0];   ?> </div>
     <div style='color:blue;'><?php echo $input[1]; } ?> </div>
0 голосов
/ 23 марта 2020

Это результат, который вы уже получаете:

<?php
  $input = array(
    'Hi',    
    'Welcome',      
  );
  $rand_keys = array_rand($input, 2);

?>

Этот код правильный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...