Php 如何在数学课上创建减法?
我正在学习OOP,这是我的第一个学习项目 我创建了一个数学类,还创建了一个add方法。但是当我尝试创建一个减法时,我不知道我在哪里遇到了问题 请帮助我,并给我的信息,我可以得到更多关于OOP的详细信息Php 如何在数学课上创建减法?,php,oop,class,methods,subtraction,Php,Oop,Class,Methods,Subtraction,我正在学习OOP,这是我的第一个学习项目 我创建了一个数学类,还创建了一个add方法。但是当我尝试创建一个减法时,我不知道我在哪里遇到了问题 请帮助我,并给我的信息,我可以得到更多关于OOP的详细信息 <?php class Math { /** * * @return int */ function add() { $args = func_num_args(); $sum = 0;
<?php
class Math
{
/**
*
* @return int
*/
function add()
{
$args = func_num_args();
$sum = 0;
$i = 0;
for ( $i; $i < $args; $i++ )
{
is_int(func_get_arg($i)) ? $sum += func_get_arg($i) : die('use only integers, please');
}
return $sum;
}
function subtract()
{
$args = func_num_args();
$sub = 0;
$i = 0;
while($i < $args)
{
$sub = func_get_arg($i);
if (is_int(func_get_arg($i)))
{
is_int($sub - func_get_arg($i));
}
}
$i++;
return $sub;
}
}
我建议您观看此视频
这可能有助于您更好地理解OOP,讲座中的一个示例与您正在尝试制作的示例非常相似。函数行
为int($sub-func_-get_-arg($i))代码>不正确。我想你打算用它作为三元运算符,并添加额外的逻辑。这是我的重写:
public function subtract() {
$args = func_get_args();
$sub = array_shift($args);
foreach ($args as $arg) {
is_int($sub - $arg) and $sub -= $arg
or die('use only integers please');
}
return $sub;
}
这里有几个小问题:
您的循环永远不会终止,因为$i的增量超出了您的while循环
$sub的首次设置应在while循环之前进行。我假设你的减法函数是要从第一个参数中减去后一个参数。现在,$sub在循环中的每次传递都会重置
$sub的值永远不会被循环中的减法操作更新。您需要根据减法为$sub指定一个新值。您可以使用-=速记,就像在add()方法中使用+=速记一样
可行的解决方案如下所示:
<?php
include("Math.php");
$c = new Math();
$result = $c->subtract(100,10,20,45);
echo $result;
?>
$sub = func_get_arg( $i ); // At this point $i == 0
while ( $i < $args ) { // Loop while $i is less than the number of args
$i++; // Increment $i
$operand = func_get_arg( $i ); // Name the argument for clarity
if ( is_int( $operand )) { // Make sure the $operand is an integer
$sub -= $operand; // Update $sub by subtracting $operand from it
} else {
// Do some error handling here...
}
}
$sub=func\u get\u arg($i);//此时$i==0
while($i<$args){//循环,而$i小于args的数量
$i++;//增量$i
$operand=func\u get\u arg($i);//为清楚起见,请命名参数
如果(is_int($operand)){//请确保$operand是整数
$sub-=$operand;//通过从$sub中减去$operand来更新$sub
}否则{
//在这里做一些错误处理。。。
}
}
您也可以使用and(或其他减法功能)完成此操作:
对于上面给出的值,您的减法方法的结果应该是什么?您的数学对象没有自己的内部状态,这些方法可以对其进行操作。这与OOP无关。基本上,您只需将一些或多或少相关的函数分组到“while”中的class.code中,您可以通过每个参数覆盖$sub,这里不再有“=”。$i++;放置在“while”之后,因此$i将始终小于$args@Bart:我猜是25
或-175
,但25
似乎更有可能。
$sub = array_reduce(array_slice(func_get_args(), 1), 'bcsub', func_get_arg(0));