【问题标题】:Using forloop to populate brackets使用 for 循环填充括号
【发布时间】:2013-08-26 17:32:32
【问题描述】:

我想学习使用 for 循环来填充括号,如下所示:- $max 从 8 开始,最大可以是 512。我只知道非常基础的 forloop,不太好形成下面的括号.. 有人可以帮助我并解释他们是如何做到的。 每个都进入简单的模式/序列。

非常感谢。

$max = 8;

if($max == 8)

[[0, 0], [0, 0]],   
[[0, 0], [0, 0]], 
[[0, 0]],
[[0, 0]]

if($max == 16)

[[0,0], [0,0], [0,0], [0,0]],
[[0,0], [0,0], [0,0], [0,0]],
[[0,0], [0,0]],
[[0,0], [0,0]],
[[0,0]],
[[0,0]]

if($max == 32)

[[0,0], [0,0], [0,0], [0,0], [0,0], [0,0], [0,0], [0,0]],
[[0,0], [0,0], [0,0], [0,0], [0,0], [0,0], [0,0], [0,0]],
[[0,0], [0,0], [0,0], [0,0]],
[[0,0], [0,0], [0,0], [0,0]],
[[0,0], [0,0]],
[[0,0], [0,0]],
[[0,0]],
[[0,0]]

等到 512。 谢谢

【问题讨论】:

  • 你有两个$max == 32s..
  • $max 是否总是 4 的倍数?此外,您可以在此处阅读有关 php for 循环的良好信息 - php.net/manual/en/control-structures.for.php 您需要的是 nested for loop
  • 抱歉,$max 总是翻倍.. 8、16、32、64、128、256、512。

标签: php loops for-loop


【解决方案1】:

所以基本上这样就可以了:

$max = 8;
$arrays = array();
for($i = $max/4; $i >= 1; $i/=2) {
  $array = array_fill(0, $i, array(0,0));
  $arrays[] = $array;
  $arrays[] = $array;
}

作为一个字符串:

$max = 8;
$arrays = array();
for($i = $max/4; $i >= 1; $i/=2) {
  $array = array_fill(0, $i, '[0,0]');
  $array = '['.implode(', ', $array).']';
  $arrays[] = $array;
  $arrays[] = $array;
}
$arrays = implode(",\n", $arrays);

【讨论】:

  • 谢谢,但如果有意义的话,您能否展示如何使用 $arrays[] 填充包含我提到的括号的字符串?
  • 您想要[[0, 0], [0, 0]], [[0, 0], [0, 0]], [[0, 0]], [[0, 0]] 作为文字字符串吗?还是我在这里误读了你?
  • 是的,只是作为一个文字字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-09
  • 1970-01-01
  • 1970-01-01
  • 2022-12-05
  • 2011-09-29
相关资源
最近更新 更多