【问题标题】:How to make a graphic using numbers with PHP [closed]如何使用 PHP 数字制作图形 [关闭]
【发布时间】:2014-12-28 22:42:06
【问题描述】:

我需要在表格字段中拆分一个数字并将其转换为一个数组。

输入表

  +------+---------+
  | id   | number  |
  +------+---------+
  |  1   |   7     |
  |  2   |   8     |
  +------+---------+

对于 id 1(有 7 个数字),我在 php 中需要的输出是:

 1 2 3 4 5 6 7 
   2 3 4 5 6 
     3 4 5 
       4 

如何做到这一点?

  for ($q=1; $q <= $obj->number  ; $q++) { 
         echo "$q";
        //This only turn 1, 2, 3, 4, 5, 6, 7
  }

【问题讨论】:

  • Stackoverflow 不是为你做家庭作业的网站...
  • 大声笑你怎么知道这是作业。我只是想知道如何做到这一点。我只是在提高我的技能。
  • 你能发布你到目前为止的代码吗?你有什么问题?
  • 告诉我们到目前为止您尝试了什么,以及您打算如何处理偶数(例如您问题中的 8)。
  • “将整数转换为数组” - 问题标题应为 “如何使用 PHP 制作数字图形”。跨度>

标签: php mysql


【解决方案1】:

试试这样的。

$set = array( 7, 8 );
echo '<pre>';
foreach( $set as $number ){
  //assuming number is your INT
  $array = range( 1, $number );
   while( count( $array ) ){
       echo "\n";
       var_export( $array );
       //remove first element
       array_shift( $array );
       //remove last element
       array_pop($array);
   }
}

输出: 7

array (
  0 => 1,
  1 => 2,
  2 => 3,
  3 => 4,
  4 => 5,
  5 => 6,
  6 => 7,
)
array (
  0 => 2,
  1 => 3,
  2 => 4,
  3 => 5,
  4 => 6,
)
array (
  0 => 3,
  1 => 4,
  2 => 5,
)
array (
  0 => 4,
)

8人份

array (
  0 => 1,
  1 => 2,
  2 => 3,
  3 => 4,
  4 => 5,
  5 => 6,
  6 => 7,
  7 => 8,
)
array (
  0 => 2,
  1 => 3,
  2 => 4,
  3 => 5,
  4 => 6,
  5 => 7,
)
array (
  0 => 3,
  1 => 4,
  2 => 5,
  3 => 6,
)
array (
  0 => 4,
  1 => 5,
)

我会留给你用它来构建一个多维数组。

如果您只想要输出,请使用echo implode(' ', $array ); 代替var_export()。比如这样:

$set = array( 7, 8 );
echo '<div style="text-align:center">';
foreach( $set as $number ){
      //assuming number is your INT
      $array = range( 1, $number );
       while( count( $array ) ){
           echo implode(' ', $array );
           //remove first element
           array_shift($array);
           //remove last element
           array_pop($array); 
           echo '<br>';
       }
       echo '<br>';
 }
 echo '</div>';

输出:

 1 2 3 4 5 6 7
   2 3 4 5 6
     3 4 5
       4

 1 2 3 4 5 6 7 8
   2 3 4 5 6 7
     3 4 5 6
       4 5

【讨论】:

  • 哇,答案很长。感谢 +1,因为它提高了我的技能。 :)
  • 一点也不长?输出很长,但这只是为了便于阅读。只需要 5 行“真实”代码。
  • 感谢 PHP Range() 的想法 :)
  • 当然,使用 Range() 可以为您节省一个循环。
  • 哇,编辑后的版本如此完整。非常感谢PHP高手! :*
【解决方案2】:
<?php 

 $n = 7; //or whatever you want
 echo '<div style="text-align:center">';
 for($i=0;$i<=round($n/2,0);$i++){
   for($j=$i; $j<$n-$i;$j++){
      echo ($j+1).' ';
   }
   echo "<br />\n";
 }
 echo '</div>';

【讨论】:

  • 感谢 +1。它提高了我的技能。谢谢!
  • 我会说要使用更详细的变量,所有的 $i、$n、$j 等...都会变得难以阅读。
  • 我会说你不能是认真的。
  • 为什么不呢?您还在每一行的末尾留下一个 ' ' 空白空间(但谁担心这一点)。 Surly只是示意图,哈哈。无论如何,这是自下而上的答案,而我的则是自上而下的答案。两者都应该完成这项工作。
  • 我认为在这种问题中应该有一个尽可能示意性的答案。这是一堂算法课,而不是秘诀。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 2017-11-20
相关资源
最近更新 更多