Valori din sql in array si rearanjarea lor

Salutare,

In urma interogarii codului sql am ca rezultat urmatorul array:

Array
(
    [0] => Array
        (
            [IdTemplate] => 1
            [Intrebare] => Intrebarea 1
        )

    [1] => Array
        (
            [IdTemplate] => 1
            [Intrebare] => Intrebarea 2
        )

    [2] => Array
        (
            [IdTemplate] => 1
            [Intrebare] => Intrebarea 3
        )

    [3] => Array
        (
            [IdTemplate] => 6
            [Intrebare] => Intrebarea 1
        )

    [4] => Array
        (
            [IdTemplate] => 6
            [Intrebare] => Intrebarea 2
        )
)

Cum pot procesa array-ul meu sa arate sub forma aceasta:

Array
(
   [1] => Array
              (
                 [0]=>'Intrebarea 1'
                 [1]=>'Intrebarea 2'
                 [2]=>'Intrebarea 3'
              )
   [6] => Array
              (
                 [0]=>'Intrebarea 1'
                 [1]=>'Intrebarea 2'
              )
)

Multumesc!

Pai de ce nu ordonezi direct in SQL?

Pai tu ai facut un SELECT * FROM TABLE si i-ai dat var_dump().
Ce te astepti sa-ti afiseze daca nu pui nicio conditie in interogarea facuta ?

Codul meu php arata asa:

$sql = "SELECT
           IdTemplate,
           Intrebare
        FROM table";
$conn -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt  = $conn->query($sql);
$rows  = $stmt->fetchAll(PDO::FETCH_ASSOC);

In urma lui var_dump() am primit ca rezultat array-ul din prima postare.

Trebuie oricum să bagi în SQL şi ORDER BY IdTemplate, Intrebare , de data asta doar s-a nimerit să-ţi dea rezultatele în ordine.

Iar ca să aranjezi array-ul, probabil iti trebuie ceva de genul asta:

<?php

$input = array(
    array("IdTemplate" => 1, "Intrebare" => "Intrebarea 1"),
    array("IdTemplate" => 1, "Intrebare" => "Intrebarea 2"),
    array("IdTemplate" => 1, "Intrebare" => "Intrebarea 3"),
    array("IdTemplate" => 6, "Intrebare" => "Intrebarea 1"),
    array("IdTemplate" => 6, "Intrebare" => "Intrebarea 2"),
);

print_r($input);
echo "<hr>";

$output = array();

array_walk($input, function($item) use(&$output) {
    $IdTemplate = $item["IdTemplate"];
    $Intrebare = $item["Intrebare"];
    $output[$IdTemplate][] = $Intrebare;
});

print_r($output);

?>

Daca nu vrei sa modifici query-ul, poti face ceva de genul asta:

$output = array();
foreach ($rows as $row) {
  if (empty($output[$row['IdTemplate']])) {
    $output[$row['IdTemplate']] = array();
  }
  $output[$row['IdTemplate']][] = $row['Intrebare'];
}
print_r($output);
1 Like