0
votes

Écho deux tableaux multidimensionnels avec table différente

J'ai donc ce genre de projet pour avoir un poste divisé en plusieurs provinces. J'ai deux tableaux multidimensionnels avec table1 et table2, j'ai essayé de le faire écho avec la fonction foreach et etc. mais toujours une erreur. Voici mon tableau:

<?php 
                        $a=mysql_query("select * from province");

                        while($m1=mysql_fetch_array($a)){
                            $result[]=$m1;
                        }
                        $output=[];
                        $i=0;
                        foreach($result as $r){
                            $b=$r['id_province'];
                            $c=mysql_query("select * from news where id_province=".$b);
                            $output[$i][$b]['table1']=$r;
                            $dummy=[];
                            while($response = mysql_fetch_array($c)){
                                $dummy[] = $response;
                            }
                            $output[$i][$b]['table2']=$dummy;
                            $i++;
                        }

Je n'ai aucune idée de comment récupérer plus de 2 tables dans mon tableau avec. Donc je répète encore je veux faire écho à ce 2 tableau la 1ère province avait 2 nouvelles et la 2e province avait aussi 2 nouvelles, ce que je veux faire est de faire écho à ces 2 nouvelles en triant par province.

Ps. Ceci est mon code pour afficher la sortie des tableaux

array(2) {
  [0]=>
  array(1) {
    [1]=>
    array(2) {
      ["table1"]=>
      array(12) {
        [0]=>
        string(1) "1"
        ["id_province"]=>
        string(1) "1"
        [1]=>
        string(13) "Province A"
        ["nm_province"]=>
        string(13) "Province A"
      }
      ["table2"]=>
      array(2) {
        [0]=>
        array(58) {
          [0]=>
          string(2) "43"
          ["id_news"]=>
          string(2) "43"
          [1]=>
          string(1) "1"
          ["id_province"]=>
          string(1) "1"
          [2]=>
          string(23) "News A"
          ["nm_news"]=>
          string(23) "News A"
        }
        [1]=>
        array(58) {
          [0]=>
          string(3) "123"
          ["id_news"]=>
          string(3) "123"
          [1]=>
          string(1) "1"
          ["id_province"]=>
          string(1) "1"
          [2]=>
          string(21) "News B"
          ["nm_news"]=>
          string(21) "News B"
        }
      }
    }
  }
  [1]=>
  array(1) {
    [2]=>
    array(2) {
      ["table1"]=>
      array(12) {
        [0]=>
        string(1) "2"
        ["id_province"]=>
        string(1) "2"
        [1]=>
        string(23) "Province B"
        ["nm_province"]=>
        string(23) "Province B"
      }
      ["table2"]=>
      array(2) {
        [0]=>
        array(58) {
          [0]=>
          string(2) "44"
          ["id_news"]=>
          string(2) "44"
          [2]=>
          string(1) "2"
          ["id_province"]=>
          string(1) "2"
          [5]=>
          string(24) "News A Province B"
          ["nm_news"]=>
          string(24) "News A Province B"
        }
        [1]=>
        array(58) {
          [0]=>
          string(3) "127"
          ["id_news"]=>
          string(3) "127"
          [2]=>
          string(1) "2"
          ["id_province"]=>
          string(1) "2"
          [5]=>
          string(13) "News B Province B"
          ["nm_news"]=>
          string(13) "News B Province B"
        }
      }
    }
  }
}

Merci d'aider les gars.


12 commentaires

Pouvez-vous afficher le code avec l'erreur?


là tu vas bro


Où est le foreach?


Je suis désolé ma mauvaise pâte fausse


Pouvez-vous donner un exemple de données


hmm que voulez-vous dire? Je vous donne déjà les données des tableaux


Je veux dire la variable pour que je puisse travailler avec comme $arr = array("somekey" => 'somevalue');


fait vérifier la dernière


Que voulez-vous faire écho?


id_province et nm_province


Des tableaux 1 et 2? ou juste le tableau 1?


les deux table je veux faire écho à nm_province et nm_news, mais avec une province différente


3 Réponses :


-1
votes

Essayer

    $c=mysql_query("select * from news where id_province='$b'");


0 commentaires

0
votes

Je dirais que vous devez d'abord nettoyer votre tableau pour vous assurer que vous essayez de référencer le bon objet, vous semblez avoir tout dupliqué avec un index et une clé dans le tableau.

array(
    'table1' => array(
        '0' => 1,
        'id_province' => 1,
        
        '1' => 'Province A',
        'nm_province' => 'Province A'
    ),
    'table2' => array(
        array(
            '0' => '43',
            'id_news' => '43',
            
            '1' => '1',
            'id_province' => '1',
            
            '2' => 'News A',
            'nm_news' => 'News A'
        ),
        array(
            '0' => '123',
            'id_news' => '123',
            
            '1' => 1,
            'id_province' => '1',
            
            '2' => 'New B',
            'nm_news' => 'News B')
    )
),
array(
    'table1' => array(
        '0' => "2",
        'id_province' => "2",
        
        '1' => "Province B",
        'nm_province' => 'Province B'
    ),
    'table2' => array(
        array(
            '0'=>'44',
            'id_news' => '44',
            
            '2' => '2',
            'id_province' => '2',
            
            '5' => 'News A Province B',
            'nm_news' => 'News A Province B'
        ),
        array(
            '0'=>'127',
            'id_news' => '127',
            
            '2'=>'2',
            'id_province' => '2',
            
            '5' => 'News B Province B',
            'nm_news' => 'News B Province B'
        )
    )
)

Éditer

J'ai décomposé votre tableau pour que vous puissiez voir clairement ce que je veux dire

[0]=>"123",
["id_news"]=>"123",

[1]=>"1",
["id_province"]=>"1",

[2]=>"News B",
["nm_news"]=>"News B",


1 commentaires

chaque deuxième élément contient les mêmes données. Le premier du duplicata est indexé (comme dans 0,1,2,3 etc ,.) tandis que les seconds ont une clé (comme dans id_news, id_province, nm_news)



1
votes

mettez à jour le code ci-dessous, cela fonctionnera pour vous.

foreach($output as $out){
            $table1= $out['table1'];
            $table2= $out['table2'];

            echo $table1['nm_provinsi'].'<br>';

            echo 'Data from table 2';
            foreach($table2 as $tab2){

                    echo "\t".$tab2['nm_berita'].'<br>';
            }

        }

Ici, j'ai supprimé [$b] supplémentaire du tableau de $output .

Copiez maintenant le code ci-dessous pour imprimer le tableau.

 foreach($result as $r){
            $b=$r['id_province'];
            $c=mysql_query("select * from news where id_province=".$b);
            $output[$i]['table1']=$r;
            $dummy=[];
            while($response = mysql_fetch_array($c)){
                $dummy[] = $response;
            }
            $output[$i]['table2']=$dummy;
            $i++;
        }


0 commentaires