我只是检查opencart的购物车控制器的功能。在哪里我看到了
foreach ($results as $result) {
if ($this->config->get($result['code'] . '_status')) {
$this->load->model('total/' . $result['code']);
$this->{'model_total_' . $result['code']}->getTotal($total_data, $total, $taxes);
}
}
工作正常。但是当我把它改成
时foreach ($results as $result) {
if ($this->config->get($result['code'] . '_status')) {
$this->load->model('total/' . $result['code']);
$this->'model_total_' . $result['code']->getTotal($total_data, $total, $taxes);
}
}
它给我一个错误Parse error: syntax error, unexpected ''model_total_''
。我不知道为什么会这样。它是指相同与否。如果没有,那么为什么我必须使用花括号$this->{'model_total_' . $result['code']}
。任何人都可以解释。
答案 0 :(得分:1)
它不接受你的结果的连接,所以试试这个,
foreach ($results as $result) {
if ($this->config->get($result['code'] . '_status')) {
$this->load->model('total/' . $result['code']);
$code = 'model_total_' . $result['code'];
$this->$code->getTotal($total_data, $total, $taxes);
}
}
或
foreach ($results as $result) {
if ($this->config->get($result['code'] . '_status')) {
$this->load->model('total/' . $result['code']);
$this->{'model_total_' . $result['code']}->getTotal($total_data, $total, $taxes); // wrap with {}
}
}
修改强>
使用数组元素进行连接时,需要使用{}
进行换行。
$this->'model_total_' . $result['code']->getTotal($total_data, $total, $taxes);
^ ^
你正在使用数组元素进行连接,所以你得到错误。
您甚至可以注意到我的第一个示例在没有{}
的情况下工作,因为它是正常变量。
答案 1 :(得分:1)
如果您想将表达式用作属性名称,则必须将其放在{}
中,除非它只是一个变量。