J'ai un tableau PHP qui produit comme suit:
Array ( [0] => email@email.com [1] => email@email.com [2] => email@email.com [3] => email@email.com [4] => email@email.com [5] => email@email.com )
Ce tableau contient une liste d'adresses e-mail, que je dois générer sous forme de chaîne JSON personnalisée, qui correspond à ce qui suit:
{ "email@email.com": {"id":1}, "email@email.com": {"id": 2}, "email@email.com": {"id": 3}, "email@email.com": {"id": 4}, "email@email.com": {"id": 5}, "email@email.com": {"id": 6} }
Quelqu'un est-il capable de m'indiquer la bonne direction? J'ai essayé d'utiliser json_encode
, sans succès.
4 réponses
Il suffit de retourner le tableau
$arr = Array ( 'email1@email.com', 'email2@email.com', 'email3@email.com');
$json = [];
foreach ($arr as $k =>$v) {
$json[$v]['id'] = $k+1;
}
echo json_encode($json); // {"email1@email.com":{"id":1},"email2@email.com":{"id":2},"email3@email.com":{"id":3}}
Vous pouvez faire comme ça,
<?php
$a = Array("email@email.com","email@email.com","email@email.com");
$arr = array();
$i = 0;
foreach($a as $single){
$arr[][$single]['id'] = $i;
$i++;
}
print_r(json_encode($arr));
?>
La démo est là, Démo
Mettez à jour votre exemple de code. Si vous prévoyez de recevoir le code JSON de l'objet qui a plus d'un «attribut» avec le même nom «email@email.com», la réponse est: ce n'est pas possible!
Parce qu'en JSON:
{ "email@email.com": {"id":1}, "email@email.com": {"id": 2}, "email@email.com": {"id": 3}, "email@email.com": {"id": 4}, "email@email.com": {"id": 5}, "email@email.com": {"id": 6} }
Est égal à (en utilisant le JavaScript de Chrome):
{"email@email.com":{"id":6}}
Vous devriez commencer par modifier votre tableau. Autant que j'ai compris, l'adresse e-mail doit devenir la clé, la clé d'origine doit être augmentée de un et être définie comme valeur pour un "id".
Veuillez noter que, puisque l'e-mail est défini comme clé, si vous avez dupliqué une adresse e-mail, la dernière remplace la première occurrence.
$emails = array(
0 => 'email1@email.com', //key => email
1 => 'email2@email.com',
2 => 'email3@email.com'
);
$new_emails = array();
foreach($emails as $key => $email){
$new_emails[ $email ]['id'] = $key+1;
}
var_dump($new_emails);
/*
Output:
array(3) {
["email@email.com"]=>
array(1) {
["id"]=>
int(1)
}
["email2@email.com"]=>
array(1) {
["id"]=>
int(2)
}
["email3@email.com"]=>
array(1) {
["id"]=>
int(3)
}
}
*/
echo json_encode($new_emails);
/*
Output:
{"email@email.com":{"id":1},"email2@email.com":{"id":2},"email3@email.com":{"id":3}}
*/
Questions connexes
De nouvelles questions
php
PHP est un langage de script largement utilisé, de haut niveau, dynamique, orienté objet et interprété, principalement conçu pour le développement Web côté serveur. Utilisé pour les questions sur le langage PHP.