【问题标题】:How can I delete repetitions in an array without using another array?如何在不使用另一个数组的情况下删除数组中的重复项?
【发布时间】:2019-03-30 11:09:40
【问题描述】:

如何在不使用另一个数组的情况下删除数组中的重复项?例如,如果我写星期一、星期三、星期一、星期三(意大利语:lunedì,mercoledì,lunedì,mercoledi)我只需要创建一个包含星期一和星期三的表格

我正在考虑使用带有布尔值的 if

ps 一个 switch case 匹配一种颜色到一周中的每一天

我的代码

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>

【问题讨论】:

  • HTML 与您的问题有何关联?对于您问题的本质,您似乎只需要一个包含一些值和所需结果的数组(就数组而言)。 HTML 只是给问题增加了不必要的分量。另外,this Q&A 没有回答你的问题吗?
  • 你可以使用 array_unique() 方法。请在这里查看php.net/manual/en/function.array-unique.php
  • 这些日期名称的入口点是什么?你为什么不阻止呢?第一步
  • 从你的问题中删除所有不相关的东西,它不会添加任何东西

标签: php arrays for-loop


【解决方案1】:
$array = array("Monday", "Wednesday", "Monday", "Wednesday");
$array = array_unique($array); // Array is now ("Monday", "Wednesday")

我希望这有效

【讨论】:

  • 很好,就是这样,但我似乎很容易获胜,因为我使用了数组函数;谢谢
  • :) 如果有其他问题,请告诉我们
【解决方案2】:

您可以将副本与数组中的最后一个元素交换,并从其有效长度中减去 1。如果交换,则不会更新当前计数器,而是从“最终”索引中减去 1。如果不交换,则更新当前计数器。一旦您的当前指针大于 final,您就完成了,并且 final 之后的元素是重复的。

【讨论】:

  • 如何与数组的最后一个元素交换副本?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-22
  • 2023-02-06
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多