尝试删除所有行或具有相同代码的一行时出现Php语法错误
我正在codeigniter中编写一个删除函数。用户有两种选择。全部删除或删除一行。我不想重复同样的代码,我使用这样的函数。但是有一个错误“Parse error:syntax error,unexpected T_ELSE”。我怎样才能解决这个问题?重复密码的唯一方法尝试删除所有行或具有相同代码的一行时出现Php语法错误,php,syntax-error,Php,Syntax Error,我正在codeigniter中编写一个删除函数。用户有两种选择。全部删除或删除一行。我不想重复同样的代码,我使用这样的函数。但是有一个错误“Parse error:syntax error,unexpected T_ELSE”。我怎样才能解决这个问题?重复密码的唯一方法 public function _delete_port() { if ($_GET['delete_all']): foreach ($_GET['delete_id'] as $delete_id)
public function _delete_port()
{
if ($_GET['delete_all']):
foreach ($_GET['delete_id'] as $delete_id):
else:
$delete_id = $_GET['delete_id'];
endif;
// Some controls
// ...
$this->db->delete('ma_port', array('id' => $delete_id));
if ($_GET['delete_all']) :
endforeach;
endif;
redirect($url);
}
那太脏了,我应该做个更好的翻译thoguh:
public function _delete_port()
{
if ($_GET['delete_all']):
foreach ($_GET['delete_id'] as $delete_id):
// Some controls
// ...
$this->db->delete('ma_port', array('id' => $delete_id));
endforeach;
else:
$delete_id = $_GET['delete_id'];
$this->db->delete('ma_port', array('id' => $delete_id));
endif;
redirect($url);
}
那太脏了,我应该做个更好的翻译thoguh:
public function _delete_port()
{
if ($_GET['delete_all']):
foreach ($_GET['delete_id'] as $delete_id):
// Some controls
// ...
$this->db->delete('ma_port', array('id' => $delete_id));
endforeach;
else:
$delete_id = $_GET['delete_id'];
$this->db->delete('ma_port', array('id' => $delete_id));
endif;
redirect($url);
}
代码面临的主要问题似乎是对流控制工作原理的误解。您所采取的方法是尝试使用
if/else/endif
来构造您希望代码的外观,而不是您希望代码做什么
如果$\u GET['delete\u all']
作为数组存在,则使用循环,否则使用$\u GET['delete\u id']
。因此,首先检查变量的内容,然后采取适当的措施。如果$\u GET['delete\u id']
不在数组中,则可以通过将$\u GET['delete\u all']
放入数组来简化整个过程
// Empty array we'll fill later
$delete_ids = array();
// If the delete_all array is available, use it as the array to delete from
if (isset($_GET['delete_all']) && is_array($_GET['delete_all'])) {
$delete_ids = $_GET['delete_all'];
}
// Next if delete_id is present
else if (isset($_GET['delete_id'])) {
// Place it into the array to use later
$delete_ids[] = $_GET['delete_id'];
}
else {
// Neither was set, you have an error state, so handle it however you need to
// Redirect, display an error, whatever.
}
// Now loop over your array and perform the action.
// The array either contains the original array from $_GET['delete_all'] or the single element $_GET['delete_id']
// Or it may be empty entirely, and therefore won't do anything
foreach ($delete_ids as $delete_id) {
$this->db_delete('ma_port', array('id' => $delete_id));
}
// And finish with your redirect
redirect($url);
代码面临的主要问题似乎是对流控制工作原理的误解。您所采取的方法是尝试使用
if/else/endif
来构造您希望代码的外观,而不是您希望代码做什么
如果$\u GET['delete\u all']
作为数组存在,则使用循环,否则使用$\u GET['delete\u id']
。因此,首先检查变量的内容,然后采取适当的措施。如果$\u GET['delete\u id']
不在数组中,则可以通过将$\u GET['delete\u all']
放入数组来简化整个过程
// Empty array we'll fill later
$delete_ids = array();
// If the delete_all array is available, use it as the array to delete from
if (isset($_GET['delete_all']) && is_array($_GET['delete_all'])) {
$delete_ids = $_GET['delete_all'];
}
// Next if delete_id is present
else if (isset($_GET['delete_id'])) {
// Place it into the array to use later
$delete_ids[] = $_GET['delete_id'];
}
else {
// Neither was set, you have an error state, so handle it however you need to
// Redirect, display an error, whatever.
}
// Now loop over your array and perform the action.
// The array either contains the original array from $_GET['delete_all'] or the single element $_GET['delete_id']
// Or it may be empty entirely, and therefore won't do anything
foreach ($delete_ids as $delete_id) {
$this->db_delete('ma_port', array('id' => $delete_id));
}
// And finish with your redirect
redirect($url);
在
foreach()之后没有正文:
。在HTML模板之外,不建议使用替代的流控制语法(使用if/endif-foreach/endforeach
。使用正确的括号中的控制结构,这样就很容易发现这些内容。if(){…}else{…}
和foreach(){…}
哦,等等,你想在这里做什么?看起来你几乎是在试图通过有条件地开始和结束循环来按程序构造PHP代码。@MichaelBerkowski我必须重复这些代码?这是唯一的解决方案吗?嵌套和脏…所以CHEARS@revo我必须重复密码?这是唯一的解决办法吗?你没有人跟着foreach():
。在HTML模板之外,不建议使用备用流控制语法(使用if/endif-foreach/endforeach
。使用适当的括号控制结构,这样就很容易发现这些内容。if(){…}else{…}
和foreach(){…}
哦,等等,你想在这里做什么?看起来你几乎是在试图通过有条件地开始和结束循环来按程序构造PHP代码。@MichaelBerkowski我必须重复这些代码?这是唯一的解决方案吗?嵌套和脏…所以CHEARS@revo我必须重复代码?这是唯一的解决办法吗?