【发布时间】:2021-04-21 04:44:34
【问题描述】:
我尝试转换以下 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;
我也不知道怎么解决,你有什么想法吗?
【问题讨论】:
-
看起来
$p是一个数组,并且(在 PHP 中)您不能只使用+将数字添加到数组中。 -
我认为问题在于 [j] 在 PHP 中并不意味着 $j,但它是什么意思?
标签: python php for-loop type-conversion