【问题标题】:Convert a numeric string to number of array keys将数字字符串转换为数组键的数量
【发布时间】:2015-07-10 16:34:41
【问题描述】:

我从用户输入中得到一个随机数(比如说$n)。是否可以创建数字数组键 array(1, 2, 3, ....., $n ) 直到用户给出的数字?实际上我想在 foreach 循环中使用它并回显该值。

这是我使用的代码之一。

$n = $_GET['num'];
foreach ($n as $a) {
    echo $a;
}

我该怎么做? 提前致谢。

【问题讨论】:

  • foreach(range(1, $n) as $a) {...}for($a =1; $a <= $n; ++$a) {...}... 后者没有创建数组的开销
  • 谢谢.. 自从过去几个小时以来一直在拔头发。你刚刚拯救了我的一天。

标签: php arrays foreach


【解决方案1】:

foreach 中创建了一个变量的临时内存,该内存在循环完成执行后刷新。当您已经知道存在key | value 关系时,更喜欢使用foreach
要创建一个最大为 $n 的数组,您可以使用 for 循环:

$array_up_to_n = array();
for ($i=1; $i<=$n; $i++)
{
    $array_up_to_n[] = $i;
}
//you can verify it by:
print_r($array_up_to_n);

我希望你想要这个结果并且我理解正确

供您参考:
每当您使用 foreach 并且想要在数组中获取结果时,请始终在 foreach 之前声明一个数组并在内部使用它:

$my_array = array();
foreach ($result as $row)
{
    $my_array[] = $row;
}

因为$rowmemory 在此循环后被刷新

【讨论】:

    【解决方案2】:

    如果您不介意在此过程中破坏$n,您可以将其递减:

    for(;$n;$a[$n--]=1) {}
    

    这当然会以相反的数字顺序创建键。如果这很重要,您可以随时ksort()

    销毁$n 可能不是什么大问题,因为在for 循环结束后count($a) 应该会产生相同的值。

    【讨论】:

    • 纯粹主义者可能更喜欢for 中的第二个选项$n&gt;0 而不仅仅是$n,但如果你知道你总是在$n 中得到一个整数,那么较短的版本应该工作得很好。
    猜你喜欢
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 2021-12-04
    • 1970-01-01
    • 2018-03-04
    相关资源
    最近更新 更多