【问题标题】:Converting Python nested loop to PHP nested loop将 Python 嵌套循环转换为 PHP 嵌套循环
【发布时间】:2021-12-30 08:47:36
【问题描述】:

我在 python 中创建了以下嵌套 for 循环 - 想法是取一个 int 值几个小时,例如 6,然后创建一个从 1-6 的值数组

hours = 6
hoursArray = [6]
convertHours = [] #Creating empty list



for i in hoursArray:
    for j in range(i-1): #This will iterate till the value in list - 1
        convertHours.append(j+1) #Appending values in new list
        hoursList = convertHours + hoursArray
    print(hoursList) #adding both the lists

输出 [1、2、3、4、5、6]

这是我对 php 的尝试 - 我对内部循环以及如何在 php 中执行“for j in range(i-1)”以及在 php 中执行“for j in range(i-1)”感到困惑,我应该将数组的最大值放入外循环的范围for($i = 0; $i <= $hoursArray-1; $i++) - 我不知道该怎么做,所以我输入 int 值$hours 来测试它。

<?php
$hours = 6;
$hoursArray = [$hours];
$convertHours =[];

for($i = 0; $i <= $hours-1; $i++) {

     for($j = 0; $j <= $i-1; $j++) {
      $convertHours = [$j+1];
      $hoursList = array_merge($convertHours, $hoursArray);

   }

 }
var_dump($hoursList);
print_r($hoursList);

?>

输出 数组(2){ [0]=> 整数(5) [1]=> 整数(6) } 大批 ( [0] => 5 [1] => 6 )

任何帮助表示赞赏!

更新:这解决了问题(尽管它不是嵌套循环)

<?php
$hours = 6;
$convertHours =[];
for($i = 0; $i <= $hours-1; $i++) {
  $convertHours[] = $i+1;
}
var_dump($convertHours);

?>

输出 = 数组(6){ [0]=> 整数(1) [1]=> 整数(2) [2]=> 整数(3) [3]=> 整数(4) [4]=> 整数(5) [5]=> 整数(6) }

【问题讨论】:

  • 在python中你的第一个for迭代hoursArray(所以只有一次)但在php中你迭代i &lt; 5,这是一个错误吗?
  • 是的,python 迭代应该取值 5,因为循环进入 1-5,然后将 6 附加到最终合并列表中
  • 你为什么要考虑将 python 转换为 php?

标签: python php for-loop


【解决方案1】:

您的问题出在$convertHours = [$j+1]; 行。这样,您将覆盖之前 $convertHours 中的值。你必须写$convertHours[] = $j+1; 这样就会有一个新值附加到数组中。或者你也可以使用array_push($convertHours, $j+1)

【讨论】:

  • 感谢这有帮助,但 php 数组的输出与 python 输出不同:我更改了 $convertHours = [$j+1];到 $convertHours[] = $j+1;现在的输出是
  • 数组 ( [0] => 1 [1] => 1 [2] => 2 [3] => 1 [4] => 2 [5] => 3 [6] = > 1 [7] => 2 [8] => 3 [9] => 4 [10] => 1 [11] => 2 [12] => 3 [13] => 4 [14] => 5 [15] => 6)
【解决方案2】:

array_merge根据key合并两个数组

$convertHours = [$j+1];

相当于:

$convertHours = [0 => $j+1];

所以当你合并它们时,它们都有相同的key,但不同的是values

我认为你应该这样做:

for($j = 0; $j <= $i-1; $j++) {
  $hoursArray[] = $j+1; 
}

这将附加到您的 array$j+1 然后最终您可以使用 sort 对您的数组进行排序

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-24
    • 2012-11-06
    • 1970-01-01
    • 2013-11-29
    • 2012-08-11
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多