有例外的数组范围
Array range with exceptions
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);
我已经将 foreach 每个数组值 $hundreds
添加到一个新数组中,并将该数组与 $hundred_tens
.
合并
基本上,您创建一个从 220 开始到 910 的 for 循环,步长为 10。在循环中,您检查数字是一百还是一百加十。如果不是,则将数字添加到数组中。
要检查一个数是否可以被 100 整除,您可以使用模块运算符 %
。
因此,如果 a
可以被 100 整除,则 a % 100 == 0
的结果为真,否则为假。一百加十,你可以这样做:(a - 10) % 100 == 0
.
您可以遍历整个范围并排除不需要的数字
$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));
哪个更好取决于您有多少排除项,以及它们是否在列表中。
参考我下面关于 for (
更快的评论,这是一个例子(只有一行不同)
$hundred_tens = array();
for ($number = 100; $number <= 1000; $number += 10) {
if ($number % 100 !== 0 && $number % 100 !== 10) {
$hundred_tens[] = $number;
}
}
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);
我已经将 foreach 每个数组值 $hundreds
添加到一个新数组中,并将该数组与 $hundred_tens
.
基本上,您创建一个从 220 开始到 910 的 for 循环,步长为 10。在循环中,您检查数字是一百还是一百加十。如果不是,则将数字添加到数组中。
要检查一个数是否可以被 100 整除,您可以使用模块运算符 %
。
因此,如果 a
可以被 100 整除,则 a % 100 == 0
的结果为真,否则为假。一百加十,你可以这样做:(a - 10) % 100 == 0
.
您可以遍历整个范围并排除不需要的数字
$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));
哪个更好取决于您有多少排除项,以及它们是否在列表中。
参考我下面关于 for (
更快的评论,这是一个例子(只有一行不同)
$hundred_tens = array();
for ($number = 100; $number <= 1000; $number += 10) {
if ($number % 100 !== 0 && $number % 100 !== 10) {
$hundred_tens[] = $number;
}
}