猿问

我想生成一个常规数组

我想生成一个常规数组。使用 1 到 n。这是一个 6 维数组的示例

01 02 04 07 11 16

03 05 08 12 17 22

06 09 13 18 23 27

10 14 19 24 23 2

5 2 34

21 26 30 33 35 36


这是我的代码。但是生成的数组数量比我想要的多


$size = 6;

for ( $i = 0; $i < $size * 2 - 1 ; $i++ )

{

    for ( $j = 0 , $i_temp = $i ; $j <= $i ; $j++ , $i_temp-- )

    {

        if( $i < $size )

        {

            if( $i == 0 && $j == 0 )

            {

                $arr[ $j ][ $i_temp ] = 1;

            } 

            else 

            {

                if( $j == 0 )

                {

                    $arr[ $j ][ $i_temp ] = $arr[ $i_temp - 1 ][ $j ] +1;

                }

                else

                {

                    $arr[ $j ][ $i_temp ] = $arr[ $j - 1 ][ $i_temp + 1 ] + 1;

                }

            }

        }

        else

        {

            if ( $i_temp < $size - 1  )

            {

                $arr[ $j ][ $i_temp ] = $arr[ $j - 1 ][ $i_temp + 1 ] + 1;

            }

            if ( $i_temp == $size - 1 )

            {

                $arr[ $j ][ $i_temp ] = $arr[ $i_temp ][ $j - 1 ] + 1;

            }

        }


    }

}

print_r($arr);

我找不到错误。有人能帮我吗?


qq_花开花谢_0
浏览 150回答 1
1回答

一只萌萌小番薯

改变if ( $i < $size ){&nbsp; &nbsp; ...}else{&nbsp; &nbsp; ...}到if( $i < $size ){&nbsp; &nbsp; ...}else if ( $j < $size ){&nbsp; &nbsp; ...}因为您不希望 $j 超过数组的大小。另一种可能性是在你的内部循环中处理这个:for ( $j = 0 , $i_temp = $i ; $j <= min( $i , $size - 1 ) ; $j++ , $i_temp-- )
随时随地看视频慕课网APP
我要回答