我收到关于“undefined offset = 0”的警告。我做错了什么?
这是我的控制者:
function document_data()
{
$this->load->library('upload');
$files = $_FILES;
$cpt = count($_FILES['userfile']['name']);
$tax_name=$this->session->userdata['doc_proff'];
$tax_cid=array();
foreach($tax_name as $key=>$value)
{
$tax_cid[]=$this->Tax_model->get_id($value);
}
foreach($tax_cid as $k=>$v) {
$new[$k] = $v[0];
}
//var_dump($k);die('gugu');
foreach($new as $k=>$v) {
$tax_id[$k] = $v['tax_id'];
}
//var_dump($v);die('gugu');
$this->upload->overwrite = true;
for($i=0; $i<$cpt; $i++)
{
$ext=explode(".", $files['userfile']['name'][$i]);
$file_name=$_POST["doc_title"][$i].".".$ext[1];
$_FILES['userfile']['name']= $file_name;
$_FILES['userfile']['type']= $files['userfile']['type'][$i];
$_FILES['userfile']['tmp_name']= $files['userfile']['tmp_name'][$i];
$_FILES['userfile']['error']= $files['userfile']['error'][$i];
$_FILES['userfile']['size']= $files['userfile']['size'][$i];
$empid=$this->session->userdata['empid'];
$this->upload->initialize($this->set_upload_options());
if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
$this->load->view('doc_upload', $error);
}
$data=array(
'doc_status' => 1,
'doc_title' => $_POST["doc_title"][$i],
'doc_link' => $file_name
);
$this->Tax_model->update_tax_submit($empid,$data,$tax_id[$i]);
$this->session->set_flashdata('message', "<p>Data added successfully.</p>");
}
}
这是我的模特:
public function get_id($name)
{
$this->db->select('tax_id');
$this->db->where('tax_name',$name);
$query=$this->db->get('tax_saving');
return $query->result_array();
}
警告发生在我的控制器的以下行:
$new[$k] = $v[0];
一切似乎都很好。我只是想摆脱这个警告。我该怎么办?
答案 0 :(得分:2)
您已使用$k => $v
拆分索引和值。只需使用获取值:$v
foreach($tax_cid as $k => $v) {
$new[$k] = $v;
}
你的阵列转储:
array(4)
{
[0]=> array(0) { }
[1]=> array(1) { [0]=> array(1) { ["tax_id"]=> string(2) "10" } }
[2]=> array(1) { [0]=> array(1) { ["tax_id"]=> string(2) "11" } }
[3]=> array(1) { [0]=> array(1) { ["tax_id"]=> string(2) "14" } }
}
事实上,您的$new[$k] = $v[0];
用法是正确的。
错误原因,您的第一个索引为空。从tax_model检查你的结果。
为什么你使用双foreach?您不需要foreachs
foreach($tax_cid as $k=>$v) {
$new[$k] = $v[0];
}
//var_dump($k);die('gugu');
foreach($new as $k=>$v) {
$tax_id[$k] = $v['tax_id'];
}
你可以使用类似于一个foreach的东西:
foreach($tax_name as $key=>$value)
{
$result = $this->Tax_model->get_id($value);
$tax_cid[] = $result[0]['tax_id'];
}
答案 1 :(得分:0)
显示错误可能是$v
数组没有索引0.首先确保如果$v
是一个数组,那么在分配它时使用索引并使用适当的索引,并且偏移是数组的索引。