I have a multidimensional array, which are incidents => technical => number of incidents => id , area.
In other words, 1 technician has n incidents and the incident has n fields or data.
I have the problem in:
incidencias->usuario1 -> incidencia1 -> idIncidencia1
usuario1 -> incidencia2 -> idIncidencia2
incidencias->usuario2 -> incidencia3 -> idIncidencia3
usuario2 -> incidencia4 -> idIncidencia4
usuario2 -> incidencia5 -> idIncidencia5
incidencias->usuario3 -> NO TIENE INCIDENCIA NI TAMPOCO CAMPOS
If I do thecount(incidencias['usuario1']) = 1 (0,1)
If I do thecount(incidencias['usuario2']) = 2 (0,1,2)
But if I do count(incidencias['usuario3'])
, it gives me the error, I don't know how to control the empty count, or if it's empty.
I have tried with:
if(count(incidencias['usuario3']) == 0 ||
count(incidencias['usuario3']) == null ||
is_null(count(incidencias['usuario3']) )){
echo "Vacío";
}
But as I say I don't know how to control the count(incidencias['usuario3'])
.
( ! ) Notice: Undefined index: usuario3 in /informe.php on line 45 Call Stack # Time Memory Function Location 1 0.0015 442560 {main}( ) .../informe.php:0 ( ! ) Warning: count(): Parameter must be an array or an object that implements Countable in informe.php on line 45 Call Stack # Time Memory Function Location 1 0.0015 442560 {main}( ) .../informe.php:0
Can somebody help me?
Thanks.
Attached code:
<?php
$hoy = date('Y-m-d 00:00:01');
include_once('../../admin/dbconect.php');
$fecha = date(('Y-m-d H:i:s'), strtotime($hoy."- 3 days"));
//abrimos conexión bdatos
$database = new Connection();
$db = $database->open();
$sqlTecnicos = "SELECT DISTINCT NOMBRE_TECNICO from tecnicos where ELIMINADA = 0 ORDER BY NOMBRE_TECNICO";
$tecnicosdb = $db->query($sqlTecnicos)->fetchAll();
//var_dump($tecnicosdb);
$incidenciaArray = array();
$technicals = array();
foreach ($tecnicosdb as $tech) {
# code...
$technicals[] = $tech['NOMBRE_TECNICO'];
}
//var_dump($technicals);
for ($a = 0;$a < sizeof($technicals);$a++) {
# code...
$nombreTecnico = $technicals[$a];
//$emailTecnico = $tecnicosdb[$a]['EMAIL_TECNICO'];
//echo $a." - ".sizeof($incidencias)."<br>";
$sqlIncidencias = "SELECT * from registros where (ESTADO_AVERIA='ABIERTA' OR ESTADO_AVERIA = 'PTE MATERIAL' OR ESTADO_AVERIA = 'RECLAMADA' OR ESTADO_AVERIA = 'PTE INGRESO') AND EMAIL_ENVIADO_A = '$nombreTecnico' AND (FECHA_HORA < '$fecha') AND ELIMINADA = 0 ORDER BY ESTADO_AVERIA, ID ASC";
$incidencias = $db->query($sqlIncidencias)->fetchAll();
//var_dump($incidencias);
//echo '<h1>Buenos días '.$nombreTecnico.", le recuerdo que tiene pendientes los siguientes avisos</h1>";
for($x = 0; $x < sizeof($incidencias); $x++) {
# code...
$incidenciaArray[$nombreTecnico][$x]['ID'] = $incidencias[$x]['ID'];
$incidenciaArray[$nombreTecnico][$x]['ZONA'] = $incidencias[$x]['ZONA'];
$incidenciaArray[$nombreTecnico][$x]['ESTADO'] = $incidencias[$x]['ESTADO_AVERIA'];
$incidenciaArray[$nombreTecnico][$x]['FECHA'] = DATE('d-m-Y',strtotime($incidencias[$x]['FECHA_HORA']));
$incidenciaArray[$nombreTecnico][$x]['POBLACION'] = $incidencias[$x]['POBLACION'];
}
}
for($i = 0;$i < count($technicals);$i++){
echo $technicals[$i]."<br>";
$tec = $technicals[$i];
for($x = 0; $x < count($incidenciaArray[$technicals[$i]]); $x++){
if(is_null(count($incidenciaArray[$technicals[$i]]))){
echo "No tiene incidencias retrasadas";
}else{
echo $incidenciaArray[$tec][$x]['ID'];
echo $incidenciaArray[$tec][$x]['ZONA'];
echo $incidenciaArray[$tec][$x]['ESTADO'];
echo $incidenciaArray[$tec][$x]['FECHA'];
echo $incidenciaArray[$tec][$x]['POBLACION'];
echo "<hr/>";
}
}
}
?>
I found the solution, I just had to check the following:
Many thanks to all.