0

I have an array who have another one inside, but when i get the response from database i have duplicates, and i don't want to have this, any help? I have used the solution provided in the link and it doesn't work "Warning: Illegal offset type in"

enter image description here

        $atividadesArray = array();
    foreach ($result as $row) {
        $idAtividade = $row['idAtividade'];
        if (!isset($atividadesArray[$idAtividade])) {
            $atividadesArray[$idAtividade]['idAtividade'] = $row['idAtividade'];
            $atividadesArray[$idAtividade]['Periodo'] = $row['Periodo'];
            $atividadesArray[$idAtividade]['Mes'] = $row['Mes'];
            $atividadesArray[$idAtividade]['haveClasses'] = $row['haveClasses'];
            $atividadesArray[$idAtividade]['Destinatarios'] = $row['Destinatarios'];
            $atividadesArray[$idAtividade]['Nome'] = array();
            $atividadesArray[$idAtividade]['Grupo'] = array();
            $atividadesArray[$idAtividade]['Departamento'] = array();

        }
        $atividadesArray[$idAtividade]['Nome'][] = $row['Nome'];
        $atividadesArray[$idAtividade]['Grupo'][] = $row['Grupo'];
        $atividadesArray[$idAtividade]['Departamento'][] = $row['Departamento'];
    }
    foreach ($atividadesArray as $idAtividade => $t ) {
        $json[]=$t;
    }
   echo json_encode($json);

1 Answers1

0

Just do not add the item, if it already exists in the array:

...
  // Search for the element in the array
  if (array_search($row['Departamento'], $atividadesArray[$idAtividade]['Departamento']) === false) {
    // Add only if nothing found
    $atividadesArray[$idAtividade]['Departamento'][] = $row['Departamento'];
  }

Note === operator is required to not mess element with key 0 (the first added) and false boolean value;

AterLux
  • 4,566
  • 2
  • 10
  • 13