【问题标题】:Adding value to array without using loops在不使用循环的情况下向数组添加值
【发布时间】:2015-03-06 12:02:39
【问题描述】:

我想知道是否可以在不使用循环的情况下向数组添加值。

是的,我知道技术上我可以写:

$myArray = array(0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32); //etc...

但正如您在示例中看到的那样,如果行很长,则使用循环会更聪明。

现在因为我已经知道每个数字都会增加 +2,所以我想知道盒子右侧是否有内部 php 命令,所以我可以通过回调或任何其他魔术技巧来做到这一点;)

语法不正确,只是为了让你能理解。

$myArray = Array();
$myArray[] = insertArray($valueOf{$x};$x;$x>=100;$x=+2);

是的,我知道这也可以作为一个函数/类应用,但我想问我是否可以在盒子的右边做那个魔法:)

谢谢!

【问题讨论】:

  • 编码的魔力??编码本身就是创造魔法。
  • 如果你知道序列是 0,2,4,......你不需要存储在数组中,因为你知道第 i 个数字是 2*(i-1) ( 1基于索引)

标签: php arrays loops for-loop foreach


【解决方案1】:

您可以使用range() (PHP Manual) 来执行此操作。要生成您的数组,请执行以下操作:

$array = range(0, 32, 2);

最后一个变量是数组中每个条目之间的步数。它默认为 1,但通过将其设置为 2,每个数字将增加 2。

print_r($array);

生产

Array
(
    [0] => 0
    [1] => 2
    [2] => 4
    [3] => 6
    [4] => 8
    [5] => 10
    [6] => 12
    [7] => 14
    [8] => 16
    [9] => 18
    [10] => 20
    [11] => 22
    [12] => 24
    [13] => 26
    [14] => 28
    [15] => 30
    [16] => 32
)

【讨论】:

  • 为什么是-1?这回答了 OP 的问题。
【解决方案2】:

是的,你有一个叫array_walk 的东西。像这样定义一个函数:

function addTwo (&$item, $key)
{
    $item = $item * 2;
}

然后这样使用函数:

array_walk ($myArray, 'addTwo');

在您的用例中,您可以将range()skip 选项一起使用,或者您可以这样使用:

array_walk (range (0, $max));

或者,range():

range (0, $max, 2);

【讨论】:

  • 这是如何向数组中添加元素的?
  • @violator667 Err... 是的,很好。我说过的所有可能的方式。
【解决方案3】:

您可以使用range() 创建一个包含一系列元素的数组,它支持skip 参数

$a = range(0,10,2);
print_r($a);

Array
(
    [0] => 0
    [1] => 2
    [2] => 4
    [3] => 6
    [4] => 8
    [5] => 10
)

【讨论】:

  • 也许您可以为 OP 添加一个示例,否则这是一个很好的答案
  • 太棒了! :)))))))))))))))))))))))))))))))))
  • @iprophesy 请不要用微笑发送垃圾邮件等,也不要使用大写字母!你可以这样写:谢谢这对我有用或类似的东西
猜你喜欢
  • 2018-02-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-01
  • 1970-01-01
  • 2021-12-19
  • 1970-01-01
  • 2018-06-02
  • 1970-01-01
相关资源
最近更新 更多