Php 非斜体字符串偏移量
我已经用php编写了一个类,该类应该接受一个带有未知数字的公式(示例公式是x+y),并用用户输入的数字(并传递给这个类)替换这些数字(x&y)。我的班级是这样的:Php 非斜体字符串偏移量,php,Php,我已经用php编写了一个类,该类应该接受一个带有未知数字的公式(示例公式是x+y),并用用户输入的数字(并传递给这个类)替换这些数字(x&y)。我的班级是这样的: <?php class formula { //declarations private $form=""; private $variables="";
<?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];)。这到底意味着什么?我该如何修复它?我猜我对数组做了一些不正确的操作,但我不是100%确定 看起来您正在使用字符串。在PHP中,连接是通过,即
$equation .=$formulaChar[$charCount];
如果您试图添加
$equation
和$formulaChar[$charCount]
,则似乎$formulaChar[$charCount]
具有字符串值。您应该将其强制转换为int
如下图所示:
$equation+=(int)$formulaChar[$charCount];
如果$formulaChar[$charCount]
是字符字符串,并且您希望使用$equation
连接,则使用“.”而不是“+”
编辑:
这是因为初始化不正常。您应该将
$formulaChar
初始化为array()
而不是字符串尝试一下。它将获取您的示例输入并返回:
1+2
仍然收到相同的错误。我会在我的帖子中更新代码调试它。这是因为$formulaChar是一个空字符串,为什么要使用全局表单?如果您使用的是私有变量,那么在一个类中,您可以将它们引用为$this->form$formulaChar用作数组。它的值在第一个循环中分配,因此如果您这样做,并将strlen($variables)更改为count($this->variables),因为您传递的$variables是一个数组,它将工作。如果需要,我可以向您展示工作代码。initilize$formulaChar as array()而不是string消除了错误,但现在我的测试页面没有显示任何内容……您不喜欢调试吗?:请接受您的答案。因此,对于其他人面临的同样问题,寻求解决方案是有帮助的。也可以用投票来选出好的答案汉克,伙计,我们真的找到了答案。我们可能和你做的一样瘦。
$equation.=$formulaChar[$charCount];
<?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();