PHP - Hola a todos tengo un problema con una función que necesito para agrupar un array

 
Vista:
sin imagen de perfil

Hola a todos tengo un problema con una función que necesito para agrupar un array

Publicado por Andres (1 intervención) el 21/10/2021 17:47:17
Cuando llega a la line a $keys = array_keys($array[0]); no me trae el dato me sale undefined offset : 0

foreach ($dat as &$idfactura) {

if($idfactura != '') {

$search1 = "SELECT * FROM CO.FacturaMaestro WHERE Id='$idfactura'";
$res1 = sqlsrv_query($conn2, $search1);
$row1 = sqlsrv_fetch_array($res1);

$perid = $row1['PersonaId'];
$Idfactura = $row1['Id'];
$BlId = $row1['BlId'];

$Facxpersona = array(
'PersonaId' => $perid,
'Id' => $Idfactura,
'BlId' => $BlId,
);
}
}

function agrupararray($array,$groupkey)
{
if (count($array)>0)
{
1
$keys = array_keys($array[0]);
$removekey = array_search($groupkey, $keys); if ($removekey===false)
return array("Clave \"$groupkey\" no existe");
else
unset($keys[$removekey]);
$groupcriteria = array();
$return=array();
foreach($array as $value)
{
$item=null;
foreach ($keys as $key)
{
$item[$key] = $value[$key];
}
$busca = array_search($value[$groupkey], $groupcriteria);
if ($busca === false)
{
$groupcriteria[]=$value[$groupkey];
$return[]=array($groupkey=>$value[$groupkey],'groupeddata'=>array());
$busca=count($return)-1;
}
$return[$busca]['groupeddata'][]=$item;
}
return $return;
}
else
return array();
}

$filtropersnoa= agrupararray($Facxpersona, $Idfactura);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Hola a todos tengo un problema con una función que necesito para agrupar un array

Publicado por Manuel (2 intervenciones) el 22/10/2021 23:03:46
1
$keys = array_keys($array[0])

¿Con ese código que quieres saber las key que compone el array verdad?

Según he mirado tu codigo y probado, lo que he realizado es la linea:
1
2
3
4
5
$Facxpersona = array(
  'PersonaId' => $perid,
  'Id' => $Idfactura,
  'BlId' => $BlId,
);

La he cambiado por:
1
2
3
4
5
$Facxpersona[] = array(
  'PersonaId' => $perid,
  'Id' => $Idfactura,
  'BlId' => $BlId,
);

De esta forma cada item de esta variable $Facxpersona[] se rellena con esos datos.

Y de esta forma la linea
1
$keys = array_keys($array[0])

Cogerá el primer valor del array para mostrarte las key que lo componen.

Prueba a ver si eso funciona o sigue igual.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar