有人知道如何用php打印这个模式吗

有人知道如何用php打印这个模式吗,php,Php,预期产出: 我当前的代码只输出模式,但不能有更多的梳: $n = 5; $n1 = 4; for ($i = 0; $i <= $n; $i++) { for ($j = 0; $j <= $n1; $j++) { if (($i == 0 || $i == 5) && ($j > 0 and $j < 3)) { if (($i == 0 &&a

预期产出: 我当前的代码只输出模式,但不能有更多的梳:

    $n = 5;
    $n1 = 4;
    for ($i = 0; $i <= $n; $i++) {
        for ($j = 0; $j <= $n1; $j++) {

            if (($i == 0 || $i == 5) && ($j  > 0 and $j  < 3)) {
                if (($i == 0 && $j == 1) || ($i == $n && $j != 2)) {
                    printf("&ensp;");
                }
                printf("$i");
            } elseif (($j == 0 || $j == 3) && ($i != 0 and $i != 5)) {
                if ($j == 0 && $i != 1 && $i != 4) {
                    printf("");
                } elseif (($j == 3 && $i != 1 && $i != 4)) {
                    printf("&ensp;&ensp;");
                } elseif ($j == 0) {
                    printf("&ensp;");
                }
                printf("$i");
            } else {
                printf("&ensp;");
            }
        }
        echo "<be>";


    
`
$n=5;
$n1=4;

为了($i=0;$i只是为了好玩,我用JS编写了它,但转换成PHP可能非常简单(
String.repeat=>str\u repeat
[].push=>array\u push
[].slice=>array\u slice
,等等)

const arr=[];
常量输出=(x=1,y=1)=>{
for(设k=0;k<5;k++){
arr.push([''重复(5-k),k',重复(k),k',重复(5-k)]。连接('')
}
对于(设k=5;k{
arr[index]=行+行.子字符串(1).重复(x-1);
});
常量=[…arr.slice(1)]
for(设i=1;i输出(2,3)
最简单的方法是创建一个数组,其中1='*'和0=''

这是PHP7中创建模式的算法

注意:我已对代码进行了更改以优化代码

<?php
$max = 6;

// Arg
$arg1 = 2;
$arg2 = 2;

// Change to pair size when is non
if ($max % 2 != 0) {
    ++$max;
}

// Matrix with zero values
$t = \array_fill(0, $max * $arg1 - $arg1 + 1, \array_fill(0, $max * $arg2 - $arg2 + 1, 0));

// Lower: start left position
$lower = $max / 2 - 1;

// Upper: start right postion
$upper = $lower + 1;

// Set pattern in matrix
for ($i = 0, $n = $max - 1; $i <= $n; $i++, $lower--, $upper++) {
    for ($a1 = 0; $a1 < $arg1; $a1++) {
        for ($a2 = 0; $a2 < $arg2; $a2++) {
            $y = $i + $max * $a1 - $a1;
            $p = $max * $a2 - $a2;
            // Set pixel pattern
            $t[$y][$lower + $p] = $t[$y][$upper + $p] = 1;
        }
    }
    // Restart lower?
    if ($lower == 0) {
        $lower = $max;
    }
    // Restart upper?
    if ($upper == $n) {
        $upper = -1;
    }
}
echo '<pre>', \PHP_EOL;
foreach ($t as $r) {
    foreach ($r as $v) {
        if ($v) {
            echo '*';
        } else {
            echo ' ';
        }
    }
    echo \PHP_EOL;
}
echo '</pre>';
?>

1…5不是1…5…1
  **   **  
 *  * *  * 
*    *    *
*    *    *
 *  * *  * 
  **   **  
 *  * *  * 
*    *    *
*    *    *
 *  * *  * 
  **   **