1

简单的问题,除数时如何获得每个选项?例如:

  • 24 by 6返回6, 12, 18, 24
  • 24 by 4返回4, 8, 12, 16, 20, 24
  • 24 by 5返回false

我的数据库中有一个数字,例如 2,我的计数器,例如 14。这意味着每次我的计数器达到第二个数字时,我都想触发我的事件。所以我想,如果我有解决方案 2、4、6 等,并且我的计数器等于解决方案之一,我可以触发我的事件。

4

7 回答 7

7

制作起来相当简单。

<?php

/**
 * @param int $number  The beginning number
 * @param int $divider The number dividing by
 *
 * @return array
 * @throws Exception   In case $number is not divisible by $divider
 */
function get_number_sequence($number, $divider) {
    //In case $number is not divisible by $divider, throw an Exception.
    if ($number % $divider !== 0) {
        throw new Exception("$number is not divisible by $divider");
    }
    //Return an array from $divider to $number in steps of $divider.
    $result = range($divider, $number, $divider);
    return $result;
}

/*
 * Testing begins
 */

try {
    echo "<pre>";
    echo implode(", ", get_number_sequence(24, 4)) . PHP_EOL;
    echo implode(", ", get_number_sequence(24, 6)) . PHP_EOL;
    echo implode(", ", get_number_sequence(24, 5)) . PHP_EOL;
    echo "</pre>";
}
catch (Exception $e) {
    echo "Invalid: " . $e->getMessage();
}

几点

  • 如果发生异常情况,请不要返回 false,Exception如示例中所示使用 an。
  • 使用模运算符来确定数字是否可整除。
  • 返回一个数组,而不是一个字符串。使用起来更容易。
于 2012-05-19T11:04:38.907 回答
1
function steps($target,$step) {
    if (($target % $step) != 0)
        return FALSE;
    $steps = range($step,$target,$step);
    return $steps;
}

$target = 24;
for ($step = 2; $step < 13; ++$step) {
    echo '$step = ',$step,PHP_EOL;
    $steps = steps($target,$step);
    var_dump($steps);
}
于 2012-05-19T10:23:47.407 回答
1

应该很容易对 X 进行模数 Y 。如果为 0,则在 X 上除以 Y。创建一个循环,该循环将从 1 运行到(在 X 上除以 Y)并输出 Y 乘以循环计数器

于 2012-05-19T09:43:47.557 回答
1
function findQuotients($number, $divider)
{
    $arr = array();

    if($number % $divider != 0)
    {
        //return "false";        
    }
    else 
    {
        $loop = $number / $divider;
        //$output="";
        for($i = 1; $i <= $loop; $i++)
        {
            //$output .= $i * $divider. " ";
            array_push($arr, $i * $divider);
        }           
    }
    return $arr;
}

echo print_r(findQuotients(24, 6));
echo print_r(findQuotients(24, 4));
echo print_r(findQuotients(24, 5));
于 2012-05-19T09:46:35.987 回答
0

根据您的描述,您想将一个数字相乘,然后根据给定的结果,您想将一个函数变白:

$num = 6;
$counter = 2;
$solution = 24;
while ($num * $counter) {
    $result= $num * $counter;
    if ($result = $solution) {
        echo $result;
        // here would go your event
        break;
    }
}
于 2012-05-19T10:10:12.093 回答
0

尝试这个

$number = 24;
$divider = 6;
if($number % $divider != 0 )
{ 
    return false;
}
$div = $number / $divider;

for($i = 1; $i <= $div; $i++)
{
    echo $i*$divider;
}
于 2012-05-19T09:45:05.160 回答
0

下面的代码片段可以解决问题。这是一个简单的循环,迭代直到$numis <= 0.$num将被除法器减去,并且每转下一个倍数$div将存储为“除法器步骤”

$num = 24;
$div = 4;

if ($num % $div != 0) {
    exit('invalid');
}

$divider = array();
for ($i = 1; $num > 0; $i++) {
    $divider[] = ($i * $div);
    $num -= $div;
}

echo 'in: ' . $num . '<br />';
echo 'div: ' . $div . '<br />';
echo '<pre>';
print_r($divider);
exit;
于 2012-05-19T09:46:34.010 回答