Tengo una función de problema para el controlador, forme más código como el siguiente:
envío datos iddata con ajax al controlador "Update_Kebutuhan_ke_Terpasang"
http://localhost/gishubkbm/Terpasang/Update_Kebutuhan_ke_Terpasang?iddata=[1,2,16,15,17,3,14,5,9,11]código en el controlador como abajo:
$iddata=array(); $iddata=array($_GET['iddata']); //value [1,2,16,15,17,3,14,5,9,11] $a=explode(",", $iddata[0]); //explode value iddata $b=preg_replace('/[^A-Za-z0-9\-]/', '', $a); $jumlahdata=count($b); for($i=0;$i<=$jumlahdata;$i++) { $c=$b[$i]; // **problem here with message undefined offset : 10** $data=array('id_perjal'=>$c); $this->M_perjal_terpasang->save($data); } echo json_encode(array("status" => TRUE));pero todas las prosas se ejecutan, los datos pueden ingresar en la base de datos.
Estás sobre iterando
Dado que las matrices están indexadas en 0 en PHP, una matriz que contiene 10 elementos no tiene un elemento con un índice de 10: el índice final es 9.
Su ciclo for solo debe iterar $i cuando es menor que la cantidad de elementos, no menor o igual a :
Cambio:
for($i = 0; $i <= $jumlahdata; $i++) { $c=$b[$i]; // **problem here with message undefined offset : 10** }a:
for($i = 0; $i < $jumlahdata; $i++) { $c=$b[$i]; // **problem here with message undefined offset : 10** }Más de una cosa tiene que cambiar. Verifique los comentarios y el código como a continuación: -
$iddata=array(); //$iddata=array($_GET['iddata']); //value [1,2,16,15,17,3,14,5,9,11] this line not needed $a=explode(",", $_GET['iddata']); //explode whole $_GET['iddata'] $jumlahdata=count($a); // count the length for($i=0;$i<$jumlahdata;$i++) // remove = to sign so that it iterates only 10 times from 0 to 9 { if(!empty($a[$i])){ // still check variable is set and have value $b=preg_replace('/[^A-Za-z0-9\-]/', '', $a[$i]); // do the replacement here on each array value,not just one outside $c=$b; $data=array('id_perjal'=>$c); $this->M_perjal_terpasang->save($data); } } echo json_encode(array("status" => TRUE));Cuando ejecuto tu código, tengo algunos errores.
$a=explode(",", $iddata[0]); en este punto solo regresa un dato$b=preg_replace('/[^A-Za-z0-9\-]/', '', $a); no se que quieres decir con esto...Código de trabajo final para usted
$b=array(); $b=array(1,2,16,15,17,3,14,5,9,11); # assume your array foreach($b as $item) { echo $item; # this will print all in a row. //$data=array('id_perjal'=>$item); //$this->M_perjal_terpasang->save($data); }si usas
empty()siempre es cierto, porque no estás solucionando el error real
Esto podría ayudar por completo para usted