2017-08-24 5 views
0
$array = [ 
      [ 
      "UF" => "Goias", 
        [ 
        "Nome" => [ 
          "Avenor", 
          "KENNEDY", 
          "JOSE" 
          ], 
        "Fone" => [ 
          "+55 (91) 1111-1111", 
          "+55 (33) 2222-2222", 
          "+55 (93) 3333-3333" 
          ], 
        "Email" => [ 
          "[email protected]", 
          "[email protected]", 
          "[email protected]" 
          ] 
        ] 
      ], 
      [ 
      "UF" => "Amazonas", 
        [ 
        "Nome" => [ 
          "Kelsen", 
          "Joao", 
          "Kenia" 
          ], 
        "Fone" => [ 
          "+55 (91) 4444-4444", 
          "+55 (33) 5555-5555", 
          "+55 (93) 6666-6666" 
          ], 
        "Email" => [ 
          "[email protected]", 
          "[email protected]", 
          "[email protected]" 
          ] 
        ] 
      ] 
    ]; 

Ich möchte eine Liste erstellen, indem Sie dieses Array durchsuchen und die Liste itens füllen. Bsp .: Wenn Benutzer "Goias" auswählen, muss ich "Goias" durch das Array suchen und eine Liste mit "Nome", "Fone" und "Email" zurückgeben, aber ich finde keine Möglichkeit, dieses Array zu loopen korrekte Werte.Wie werden Werte aus einem mehrdimensionalen Array gesucht und abgerufen?

$selected = isset($_POST['selected']) ? $_POST['selected'] : 'nothing'; 
$key = array_search($selected,array_column($array, 'UF')); 

foreach ($array[$key] as $data){ 

     echo '<li><p>Nome: '.$data["Nome"].'</p><p>Fone: '.$data["Fone"].'</p><p>E-mail: '.$data["Email"].'</p></li>'; 
}; 

EDIT:

Ich habe versucht, dies zu tun:

echo 
     '<div class="representante-wrapper"> 
      <h3>'.$selected.'</h3>'; 
      foreach ($array[$key] as $data){ 
        foreach($data as $value){ 
        echo '<ul class="flex" id="dados" style="opacity: 1;">'; 
        var_dump($value); 
          foreach($value["Nome"] as $nome){ 
            echo '<li><p>Nome: '.$nome.'</p></li>'; 
          } 
          foreach($value["Fone"] as $fone){ 
            echo '<li><p>Fone: '.$fone.'</p></li>'; 
          } 
          foreach($value["Email"] as $email){ 
            echo '<li><p>E-mail: '.$email.'</p></li>'; 
          } 
        echo '</ul>'; 
        } 
      }; 
    echo '</div>'; 

aber das Ergebnis ist nicht das, was ich

erwarten
Nome: Kelsen 

Nome: Joao 

Nome: Kenia 

Fone: +55 (91) 4444-4444 

Fone: +55 (33) 5555-5555 

Fone: +55 (93) 6666-6666 

E-mail: [email protected] 

E-mail: [email protected] 

E-mail: [email protected] 

ich dies wie unten will, jedes Array innerhalb Ihre Liste:

Nome: Kelsen 
Fone: +55 (91) 4444-4444 
E-mail: [email protected] 


Nome: Joao 
Fone: +55 (33) 5555-5555 
E-mail: [email protected] 

Nome: Kenia 
Fone: +55 (93) 6666-6666 
E-mail: [email protected] 

Antwort

0

Sie können versuchen, mit Schlüssel und Wert, so etwas wie suchen:

foreach ($array as $key => $value) { 
    // $key is "Goias" 
    // $value is an array with "nome", "fone" and "Email" keys 
} 
0
$array = array("UF" => array("Goias"=> array("Nome" => array("Avenor","KENNEDY","JOSE"), 
       "Fone" => array("+55 (91) 1111-1111","+55 (33) 2222-2222","+55 (93) 3333-3333"), 
       "Email" => array("[email protected]","[email protected]","[email protected]") 
       ) 
     ), 
     array(
     "UF" => array("Amazonas"=> 
       array(
       "Nome" => array(
         "Kelsen", 
         "Joao", 
         "Kenia" 
         ), 
       "Fone" => array(
         "+55 (91) 4444-4444", 
         "+55 (33) 5555-5555", 
         "+55 (93) 6666-6666" 
         ), 
       "Email" => array(
         "[email protected]", 
         "[email protected]", 
         "[email protected]" 
         ) 
       ) 
     ) 
)); 
$selected = isset($_POST['selected']) ? $_POST['selected'] : 'nothing'; 
$i=0; 
    foreach($array as $key => $val){ 
    if(isset($array[$i]['UF'][$selected])){ 
     break; 
    } 
    $i++; 
    } 
foreach ($array[$i]['UF'] as $data){ 
$li = '<li>'; 
foreach($data["Nome"] as $nome){ 
$li .= '<p>Nome:'.$nome.'</p>'; 
} 
foreach($data["Fone"] as $nome){ 
$li .= '<p>Fone:'.$nome.'</p>'; 
} 
foreach($data["Email"] as $nome){ 
$li .= '<p>E-mail:'.$nome.'</p>'; 
} 
     $li .= '</li>'; 
echo $li; 
}; 
+0

Es ist nicht funktioniert, php Rückgabe: "Undefined index: Nome"; "Ungültiges Argument für foreach()" – kelsen

+0

übergeben Überprüfen Sie den oben bearbeiteten Code – Rajnish

Verwandte Themen