Как я могу удалить повторы в массиве, не используя другой массив? - PullRequest
0 голосов
/ 30 марта 2019

Как я могу удалить повторы в массиве, не используя другой массив? например, если я напишу понедельник, среду, понедельник, среду (на итальянском языке: lunedì, mercoledì, lunedì, mercoledi), мне нужно создать таблицу только с понедельником и средой

Я думал об использовании if с логическим значением

ps регистр переключения соответствует одному цвету для каждого дня недели

мой код

body {
  color: purple;
}

table,
th,
td {
  border: 1px solid black;
  width: 44px;
}

#yellow {
  background-color: yellow;
}

#green {
  background-color: green;
}

#orange {
  background-color: orange;
}

#blue {
  background-color: blue;
}

#red {
  background-color: red;
}

#purple {
  background-color: yellowgreen;
}

#royalblue {
  background-color: royalblue;
}
<!DOCTYPE html>
<html>

<head>

  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>Giorni colorati</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" type="text/css" media="screen" href="giornicolorihtml.css">
  <script src="main.js"></script>

</head>

<body>

  <h1> Tabella giorni con colori </h1>

  <form action="giornicolorihtml.php">

    <label>

Scrivi 7 giorni della settimana:

<input type="text" name="giorni" value="">

</label>


    <br>
    <br>
    <br>
    <br>


  </form>

  <?php

$frase = $_GET['giorni'];

$frasespazi=trim($frase);

?>

    <table>

      <tr>

        <?php


          $arrayfrase = explode (",", $frase);

            for ($l=0; $l<count($arrayfrase); $l++) {

              $confronto = $arrayfrase[$l];

                for ($i=count($arrayfrase)-1; $i>0; $i--) {

                    if ($confronto != $arrayfrase[$i]) {


switch (true) {
     case ($arrayfrase[$i] == "lunedì"): $varcolor = "yellow";
        break;
        case ($arrayfrase[$i] == "martedì"): $varcolor = "green";
        break;
        case ($arrayfrase[$i] == "mercoledì"): $varcolor = "orange";
        break;
        case ($arrayfrase[$i] == "giovedì"): $varcolor = "blue";
        break;
        case ($arrayfrase[$i] == "venerdì"): $varcolor = "red";
        break;
        case ($arrayfrase[$i] == "sabato"): $varcolor = "purple";
        break;
        case ($arrayfrase[$i] == "domenica"): $varcolor = "royalblue";
        break;    

    }


}

}
?>

          <td id="<?php echo $varcolor; ?>">
            <?php   
    echo $arrayfrase[$l] ."<br>";

} // for esterno

?>

          </td>

      </tr>

    </table>

</body>

</html>

Ответы [ 2 ]

1 голос
/ 30 марта 2019
$array = array("Monday", "Wednesday", "Monday", "Wednesday");
$array = array_unique($array); // Array is now ("Monday", "Wednesday")

Надеюсь, это работает

0 голосов
/ 30 марта 2019

Вы можете поменять дубликат с последним элементом в массиве и вычесть 1 из его эффективной длины.если вы поменяете местами, вы не обновите текущий счетчик, но вычтете 1 из своего «окончательного» индекса.Если вы не поменяете местами, вы обновите текущий счетчик.Как только ваш текущий указатель больше, чем final, все готово, и элементы после final являются дубликатами.

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