gpt4 book ai didi

python - 从python到PHP的for循环转换问题

转载 作者:行者123 更新时间:2023-12-04 08:15:04 24 4
gpt4 key购买 nike

我尝试转换以下 Python 函数:

def Sous(dist,d):

l = len(dist)
L = [[]]
for i in range(l):
K = []
s = sum(dist[i+1:])
for p in L:
q = sum(p)
m = max(d - q - s, 0)
M = min(dist[i], d - q)
for j in range(m, M+1):
K.append(p + [j])
L = K
return L
进入一个 PHP 函数:
function sous($dist, $d){
$l = count($dist);
$L = [[]];
foreach(range(0,$l) as $i){
$K = [];
$s = array_sum(array_slice($dist, $i+1));
foreach($L as $p){
$q = array_sum($p);
$m = max($d-$q-$s, 0);
$M = min($dist[$i], $d-$q);
foreach(range($m, $M+1) as $j){
$K[] = $p+$j;
}
}
$L = $K;
}
return $L;
}
当我测试它时:
var_dump(sous([3,2,2,1,1,0], 2));
我收到错误:
Uncaught Error: Unsupported operand types
对于线
$K[] = $p+$j;
我不知道如何解决它,你有什么想法吗?

最佳答案

Python的range(n)0 返回一个数组至 n-1而 PHP 的 range($n, $m)$n 返回一个数组至 $m ,所以你必须使用 range(0, $l -1)那里。
还有 K.append(p+[j])应转换为 $K[] = $p+[$j];$j不是数组。
以下功能应该工作:

function sous($dist, $d){
$l = count($dist);
$L = [[]];
foreach(range(0,$l - 1) as $i){
$K = [];
$s = array_sum(array_slice($dist, $i+1));
foreach($L as $p){
$q = array_sum($p);
$m = max($d-$q-$s, 0);
$M = min($dist[$i], $d-$q);
foreach(range($m, $M+1) as $j){
$K[] = $p+[$j];
}
}
$L = $K;
}
return $L;
}

关于python - 从python到PHP的for循环转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65748209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com