我如何进一步在这个php数组1索引中放置元素?

时间:2016-01-04 21:12:24

标签: php arrays

我必须为学校作业编写一个小脚本,将一周中的日期按时间顺序排列,并在其前面加上索引。虽然星期天必须是第一天,因此必须在它前面有1号。 (2星期一,3星期二等)

我试图通过将数组中的所有元素放在一个索引中来进行此操作,但它似乎不起作用。

$myArray = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
for ($i=0; $i<count($myArray); $i++) {
  $myArray[$i] = $myArray[$i+1];
  echo ($i+1) . " " . $myArray[$i] . "<br>";
}

这是我执行代码时收到的错误信息:

1星期二 周三2 周四3 4星期五 5星期六 6星期日

  

注意:未定义的偏移量:第13行的C:\ xampp \ htdocs \ opdracht_22.php中的7   7

我想要的结果是:

1周日
星期一2 3星期二 周三4 星期四5 星期五 7月7日星期六

这里有什么我想念的吗?我该如何改进我的代码?

4 个答案:

答案 0 :(得分:0)

<body>
    <?php
        $myArray = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
        foreach($myArray as $key => $val) {
           echo $key++ . " " . $val . "<br>";
        }  
    ?>
</body>

答案 1 :(得分:0)

您可以使用临时数组并将它们交换。

如:

  $newArray = [];
  for($i = 0; $i < count($myArray); $i++){
     $newArray[$i+1] = $myArray[$i];
  }

  $newArray[0] = $newArray[$i]; // for the last one to loop back to the first element of the temporary array

然后只需将newArray的元素复制到myArray

即可
  $myArray = $newArray;

让我知道它是怎么回事

答案 2 :(得分:0)

您可以使用简单的if (!mappedProperties.hasPersistentPropertyForField(fieldName)) { i.remove(); continue; } 循环

来获得所需的结果
while

输出:

<?php
    $myArray = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
    $array_length = count($myArray);  // $array_length is 7
    $index = $array_length - 1;  // $index is 6 here 
    $counter = 1;  // here $counter is used to print Nth weekday
    while(true){
        echo $counter . " " . $myArray[$index] . "<br />";
        $index = ($index + 1) % $array_length;  // performs increment and modulus operation to get the reminder value
        ++$counter;
        if($index == $array_length - 1){  // whenever $index is 6 again the loop will terminate
            break;
        }
    }
?>

答案 3 :(得分:0)

将星期日移到开头后,重新排序键的一种简单方法是使用array_combine和新键的范围。

array_unshift($myArray, array_pop($myArray));
array_combine(range(1,7), $myArray);