从C#到PHP的正确转换函数

从C#到PHP的正确转换函数,c#,php,arrays,C#,Php,Arrays,C#中有一个函数(带的函数的主要任务): Int32[]螺旋线最小值(Int32[,]arr){ 列表=新列表(); Int32 n=arr.GetLength(0); Int32计数=n; Int32值=-n; Int32总和=-1; 做{ 值=-1*值/n; 对于(Int32 i=0;i

C#中有一个函数(带的函数的主要任务):

Int32[]螺旋线最小值(Int32[,]arr){
列表=新列表();
Int32 n=arr.GetLength(0);
Int32计数=n;
Int32值=-n;
Int32总和=-1;
做{
值=-1*值/n;
对于(Int32 i=0;i0);
return list.ToArray();
}
我尝试在PHP中执行相同的操作,但在代码中遇到了一个问题,有一个字符串:

arr[sum / n, sum % n]
我不知道如何在PHP中实现这一点,通过
array\u merge
尝试了它,但该函数仍然不起作用

函数f($a)
{
$n=计数($a[0]);
$count=$n;
$value=-$n;
$sum=-1;
做
{
$value=-1*$value/$n;
对于($i=0;$i<$count;$i++){
$sum+=$value;
$r[]=数组合并($a[$sum/$n],$a[$sum%$n]);
}
$value*=$n;
$count--;
对于($i=0;$i<$count;$i++){
$sum+=$value;
$r[]=数组合并($a[$sum/$n],$a[$sum%$n]);
}
}
而($count>0);
返回$r;
}

请告诉我问题是什么以及如何解决?

您可以使用array\u push。如下图所示:

function f($a)
{
    $n = count($a);
    $count = $n;
    $value = -$n;
    $sum = -1;
    $r = [];
    do
    {
        $value = -1 * $value / $n;
        for ($i = 0; $i < $count; $i++) {
            $sum += $value;
            array_push($r, $a[$sum / $n], $a[$sum % $n]);
        }
        $value *= $n;
        $count--;

        for ($i = 0; $i < $count; $i++) {
            $sum += $value;
            array_push($r, $a[$sum / $n], $a[$sum % $n]);
        }
    }
    while ($count > 0);
    return $r;
}
函数f($a)
{
$n=计数($a);
$count=$n;
$value=-$n;
$sum=-1;
$r=[];
做
{
$value=-1*$value/$n;
对于($i=0;$i<$count;$i++){
$sum+=$value;
数组推送($r,$a[$sum/$n],$a[$sum%$n]);
}
$value*=$n;
$count--;
对于($i=0;$i<$count;$i++){
$sum+=$value;
数组推送($r,$a[$sum/$n],$a[$sum%$n]);
}
}
而($count>0);
返回$r;
}

假设
$arr
是二维数组,您可以使用
$arr[$index1][$index2]
符号从数组中访问元素。因此:

arr[sum / n, sum % n]
将成为:

$arr[$sum / $n][$sum % $n]

我在那里运行了二维数组的示例,在注释中指出了结果应该是什么,但仍然没有指出我错过了什么?我编辑了答案(将
$n=count($a[0]);
更改为
$n=count($a);
)。检查一下这些帮助是什么样子的?@SalmanA,有点像一个二维数组,
[[1,2,3],[8,9,4],[7,6,5]
,例如。。。只需使用
$arr[$sum/$n][$sum%$n]
。对于上面的例子,
$arr[2][2]
会给你
5
@SalmanA,三声欢呼,你是我的救世主,非常感谢你)*