【问题标题】:Syntax error, unexpected '[', expecting ')' php error message [duplicate]语法错误,意外的'[',期待')' php错误消息[重复]
【发布时间】:2018-03-06 23:28:34
【问题描述】:

我只是不明白为什么会收到此消息:

解析错误:语法错误,第 11 行出现意外的 '[',期待 ')'

在这个文件中:

    <?php 
class Telegram
{   
    protected $notice = array();
    private $db;
    public function __construct()
    {
        $this->db = new Connection();
        $this->db = $this->db->dbConnect();
    }
    public function AddNew($token,$cat,$ads[$i],$key[$j])
    {
        if(!empty($token)&&!empty($cat)&&!empty($ads))
        {
            $new = $this->con->prepare("INSERT INTO channels (token_number, category_name, ads_set, keyboard_status) VALUES (?, ?, ".$ads[$i].", ".$key[$i].")");
            $new->bindParam(1,$token);
            $new->bindParam(2,$cat);
            $new->bindParam(3,$ads);
            $new->bindParam(4,$key);
            $new->execute();
            $notice['success_message'] = "New Telegram Channel was successfully added";
            return $this->notice;

        }
    }
    public function getNotice()
    {
        return $this->notice;
    }
}
?>

第 11 行是这样的:

public function AddNew($token,$cat,$ads[$i],$key[$j])

【问题讨论】:

  • 因为语法无效。你想达到什么目的,没有多大意义
  • 您可以查看我的另一个问题以了解其背后的理论:stackoverflow.com/questions/46404664/…
  • 值应该只是传递给变量。
  • 有人可能会传入一个值来点赞$ads[3],但你不能将$ads[3]作为参数抓取,你只需要得到$ads的值
  • 如果您在原始问题中遵循了任一位回答者的建议,您甚至不会遇到此问题。这是XY problem 的完美示例。请注意,这里的第一条评论指出“没有多大意义”——这是一个很好的指标。

标签: php oop


【解决方案1】:

你不能在函数参数中使用数组的索引。

public function AddNew($token,$cat,$ads,$key)
{

}

【讨论】:

    【解决方案2】:

    尝试只在参数中传递数组(如果您想访问数组中的特定数据,则单独传递 $i 变量):)

    【讨论】:

    • 像这样改变你的原型:public function AddNew($token, $cat, $ads, $i, $key, $j)
    【解决方案3】:

    试试这个你可以像这样传递数组和键

    public function AddNew($token,$cat,$ads,$key)
    {
        if(!empty($token)&&!empty($cat)&&!empty($ads))
        {
            $new = $this->con->prepare("INSERT INTO channels (token_number, category_name, ads_set, keyboard_status) VALUES (?, ?, ".$ads[$i].", ".$key[$i].")");
            $new->bindParam(1,$token);
            $new->bindParam(2,$cat);
            $new->bindParam(3,$ads);
            $new->bindParam(4,$key);
            $new->execute();
            $notice['success_message'] = "New Telegram Channel was successfully added";
            return $this->notice;
    
        }
    }
    

    【讨论】:

    • 我不能那样做,因为在另一页我这样称呼: $tel = new Telegram($token, $cat, $ads[$i], $key[$j ]); $notice[] = $tel->AddNew();
    • @dasoudeabiat 您需要在 AddNew(param, param, param, param) 中传递值,就像在您的函数 AddNew($token,$cat,$ads,$key) 中一样示例只需放在 $tel->AddNew($token,$cat,$ads[$i],$key[$j]);在这里你可以。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 2017-09-12
    • 2016-01-29
    • 2013-09-22
    相关资源
    最近更新 更多