2013-09-29 5 views
2

quelques petites choses dans la programmation obtenir des géants. Je suis en train de dormir sur 2 dimentional array mais je suis incapable d'obtenir ce dont j'ai besoin.boucle à travers multidimentional array en PHP

ci-dessous est ma structure de tableau.

Array 
     (
    [0] => Array 
    (
     [0] => 16 
     [id] => 16 
     [1] => 1 
     [userid] => 1 
     [2] => [email protected] 
     [email] => [email protected] 
     [3] => dffsdf 
     [message] => dffsdf 
     [4] => 0 
     [status] => 0 
    ) 

[1] => Array 
    (
     [0] => 17 
     [id] => 17 
     [1] => 1 
     [userid] => 1 
     [2] => [email protected] 
     [email] => [email protected] 
     [3] => dffsdfnnnnnnnnnnn 
     [message] => dffsdfnnnnnnnnnnn 
     [4] => 0 
     [status] => 0 
    ) 
) 

Ce que je fais ici est d'obtenir les messages pour un utilisateur avec un certain ID. je fais comme ça

if($get_mails[0]['userid'] == $_GET['userid']) 
    { 

$last_key = end(array_keys($get_mails)); 

echo '{"Messages":['; 

foreach($get_mails as $key => $get_each_mail){ 

$company_name = $get_each_mail['company_name']; 
$email_id = $get_each_mail['id']; 
$email_body = $get_each_mail['message']; 
} 
echo '{"CompanyName":"'.$company_name.'","MessageID":"'.$email_id.'","MessageBody":"'.$email_body.'"'; 

if ($key == $last_key) 
{ 
    echo '}]}'; 
}else{ 
    echo'},'; 
    } 
} 

ce que je suis incapable de le faire est si drôle que j'ai besoin d'une boucle pour [0] dans cette ligne de code

if($get_mails[0]['userid'] == $_GET['userid']) 

comme

if($get_mails[i]['userid'] == $_GET['userid']) and it give me all the records against specific user. 

voici ce que je veux obtenir pour un utilisateur spécifique

{"Messages":[{"CompanyName":"newtech","MessageID":"14","MessageBody":"hi how are you"},{"CompanyName":"newtech","MessageID":"15","MessageBody":"hi how are you"},{"CompanyName":"newtech","MessageID":"24","MessageBody":"asfasdfsdfsdfsdfsdfsdfsdfsd"}]} 

respose comme ça, il va ajouter de plus en plus si plus d'enregistrements seraient disponibles contre l'utilisateur spécifique.

+3

Êtes-vous en train de faire JSON? – Sumurai8

+0

oui exactement je fais jason –

+2

Utilisez 'json_encode()' pour cela au lieu d'essayer d'écho les caractères corrects. Pourriez-vous ajouter la structure du json désiré à la question? – Sumurai8

Répondre

1

En supposant $get_mails contient le tableau ci-dessus vous avez publié (y compris company_name), vous pouvez écrire quelque chose comme ceci:

$output = Array("Messages" => Array()); 
foreach($get_mails as $k => $arr) { 
    $t = Array(); 
    $t['CompanyName'] = $arr['company_name']; 
    $t['MessageID'] = $arr['id']; 
    $t['MessageBody'] = $arr['message']; 

    $output['Messages'][] = $t; 
} 

echo json_encode($output); 

D'abord, vous préparer un tableau avec la structure de votre JSON. La syntaxe $array[] = a ajoutera a à $array. A la fin, json_encode(...) se chargera de le transformer en JSON valide, même si l'une de vos clés incluait une citation ou un autre caractère spécial invalide dans JSON.

Je crois que vous voulez seulement afficher des messages d'un certain utilisateur, et essayer d'accomplir cela avec if($get_mails[0]['userid'] == $_GET['userid']). Je recommande de changer votre requête SQL à quelque chose qui accomplit cela, car les performances de votre page augmentera considérablement si vous essayez de ramper à travers tous les messages avec le code suivant:

$output = Array("Messages" => Array()); 
foreach($get_mails as $k => $arr) { 
    if($arr['user_id'] == $_GET['userid']) { 
    $t = Array(); 
    $t['CompanyName'] = $arr['company_name']; 
    $t['MessageID'] = $arr['id']; 
    $t['MessageBody'] = $arr['message']; 

    $output['Messages'][] = $t; 
    } 
} 

echo json_encode($output); 
+0

J'ai résolu mon problème il n'y avait pas d'erreur dans mon code, sauf pour le}.En passant, merci à tous pour leurs suggestions gentilles et agréables et ponctuelles. Thaks overstack et aussi tous les gars. –

+0

voici mon code correct if ($ get_mails) { \t \t $ last_key = end (array_keys ($ get_mails)); \t echo '{"Messages": ['; \t foreach ($ get_mails comme $ clé => $ get_each_mail) { \t $ nom_société = $ get_each_mail ['company_name']; \t $ email_id = $ get_each_mail ['id']; \t $ email_body = $ get_each_mail ['message']; Echo '{"CompanyName": "'. $ Company_name. '", "MessageID": "'. $ Email_id. '", "MessageBody": "'. $ Email_body. '"'; \t \t si (touche $ == last_key de $) \t { \t echo '}]}'; \t} else { \t \t echo '},'; \t \t}} \t \t \t \t \t } –

Questions connexes