Php 非斜体字符串偏移量

Php 非斜体字符串偏移量,php,Php,我已经用php编写了一个类,该类应该接受一个带有未知数字的公式(示例公式是x+y),并用用户输入的数字(并传递给这个类)替换这些数字(x&y)。我的班级是这样的: <?php class formula { //declarations private $form=""; private $variables="";

我已经用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];)。这到底意味着什么?我该如何修复它?我猜我对数组做了一些不正确的操作,但我不是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();