数组范围有例外

时间:2015-08-17 23:18:57

标签: php arrays range

在PHP函数范围内有一个起点,一个终点和一个步骤点。

是否可以创建一个带数字的数组,其中某些值不应该存在?

$hundred_tens = range(120, 190, 10);    

我需要数字220,230,...... 290 ... 920,930..990,但不是200,210 ... 900,910。

我的解决方案:

$hundreds = range(100, 800, 100); 
foreach ($hundred_tens as $value) {
    $add_numbers[] = $value + $hundreds[0];
    $add_numbers[] = $value + $hundreds[1];
    $add_numbers[] = $value + $hundreds[2];
    $add_numbers[] = $value + $hundreds[3];
    $add_numbers[] = $value + $hundreds[4];
    $add_numbers[] = $value + $hundreds[5];     
    $add_numbers[] = $value + $hundreds[6];
    $add_numbers[] = $value + $hundreds[7];
}
$all_hundred_tens = array_merge($hundred_tens, $add_numbers);

我已将每个数组值$hundreds添加到一个新数组中,并将此数组与$hundred_tens合并。

2 个答案:

答案 0 :(得分:1)

基本上,你创建一个从220到910开始的for循环,步长为10.在循环中你检查数字是一百还是一百加十。如果不是,则将数字添加到数组中。

要检查数字是否可以除以100,您可以使用模块运算符%

因此,如果a % 100 == 0可以除以100,则a将导致为true,否则为false。对于数百加十,您可以执行:(a - 10) % 100 == 0

答案 1 :(得分:1)

您可以遍历整个范围并排除不必要的数字

Max_index

或者您可以合并较小的范围:

Max_index

哪一个更好取决于你有多少排除,以及它们是否在列表中。

请参阅下面有关$hundred_tens = array(); foreach (range(100, 800, 10) as $number) { if ($number % 100 !== 0 && $number % 100 !== 10) { $hundred_tens[] = $number; } } 更快的评论,以下是一个示例(只有一行不同)

$hundred_tens = array_merge(range(120, 190, 10), range(220, 890, 10), range(920, 990, 10));