我在php中编写了一个类,它应该使用未知数字的公式(示例公式为x + y)并用用户输入的数字替换这些数字(x& y)(并传递给这个班)。我的班级看起来像这样:
<?php
class formula
{
//declarations
private $form="";
private $variables="";
private $values="";
//end of declarations
public function __construct($f, $vars, $vals)
{
$form=$f;
$variables=$vars;
$values=$vals;
}
public function getEquation()
{
//declarations
$curChar="";
$varCount=0;
$charCount=0;
$formulaChar=array();
$i=0;
$equation="";
$size=strlen($this->form); //number of characters in $form
//end of declarations
while($i<$size)
{
$curChar=substr($this->form, $i);
$formulaChar[$i]=$curChar;
$i++;
}
while($charCount<$size)
{
$varCount=0;
while($varCount<strlen($variables))
{
if($formulaChar[$charCount]==$variables[$varCount])
{
$formulaChar[$charCount]=$values[$varCount];
}
$varCount++;
}
$charCount++;
}
$charCount=0;
while($charCount<count($formulaChar))
{
$equation.=$formulaChar[$charCount];
$charCount++;
}
return $equation;
}
}
?>
出于测试目的,我创建了一个页面,将一些虚拟值传递给类,然后将结果写入屏幕:
<?php
include("formula.php");
$formula="x+y";
$variables=array("x", "y");
$values=array(1,2);
$test=new formula($formula, $variables, $values);
echo $test->getEquation();
?>
当我运行它时,我得到一个错误,说我在第65行有一个未经初始化的字符串偏移量($ equation。= $ formulaChar [$ charCount];)。究竟是什么意思,我该如何解决?我猜我在阵列上做错了什么,但我并不是百分百肯定。
答案 0 :(得分:1)
看起来你正在使用字符串。在PHP中,连接是用。,即
完成的$equation .=$formulaChar[$charCount];
答案 1 :(得分:1)
如果您尝试添加$equation
和$formulaChar[$charCount]
,则$formulaChar[$charCount]
似乎有字符串值。您应该将其投放到int
。
如下所示:
$equation+=(int)$formulaChar[$charCount];
如果$formulaChar[$charCount]
是字符串,并且您希望与$equation
连接,则使用“。”而不是“+”
$equation.=$formulaChar[$charCount];
编辑:
这是由于初始化不正常。您应该将$formulaChar
初始化为array()
而不是字符串
答案 2 :(得分:0)
给它一个机会。它将输入您的样本并返回:
1 + 2
<?php
class formula
{
//declarations
private $form="";
private $variables="";
private $values="";
//end of declarations
public function __construct($f, $vars, $vals)
{
$this->form=$f;
$this->variables=$vars;
$this->values=$vals;
}
public function getEquation()
{
$equation = $this->form;
foreach ($this->variables as $index => $letter) {
$equation = str_replace($letter, $this->values[$index], $equation);
}
return $equation;
}
}
$formula="x+y";
$variables=array("x", "y");
$values=array(1,2);
$test=new formula($formula, $variables, $values);
echo $test->getEquation();