Créer un tableau associatif en php avec la dynamique de la clé et de la valeur
Je veux créer un tableau associatif en php avec la dynamique de la clé et aussi une valeur dynamique à partir d'une table mysql.
Le nom de la table est monthly_salary
avec deux colonne nommée month
et salary
respectivement.
- Je obtenir les données à l'intérieur:
$sql = mysql_query('SELECT * FROM monthly_salary');
$sql2 = mysql_query('SELECT * FROM monthly_salary');
Ensuite attribué et concaténés les données recueillies pour $mon
et $sal
:
$mon = "";
$sal = "";
while($row = mysql_fetch_array($sql)){
$mon .= $row['month'].", ";
}
while($row = mysql_fetch_array($sql2)){
$sal .= $row['salary'].", ";
}
Après que j'ai convertie en tableau et de les enchaîner jusqu'à ce qu'il est devenu et tableau associatif:
$monArray = array(substr(trim($mon), 0, -1));
$salArray = array(substr(trim($sal), 0, -1));
$key = "";
$keyWithVal = "";
foreach($monArray as $k){
$key .= $k." => ";
}
foreach($salArray as $k){
$keyWithVal .= $key.$k.",";
}
$associativeArray = array(substr(trim($keyWithVal), 0, -1));
Mon Problème est que lorsque j'ai echo, le résultat est toujours comme ça
3500=>Jan=>3500:
foreach($associativeArray as $k => $id){
echo $k."=>".$id;
}
Alors, comment puis-je corriger cela, et avec la bonne sortie Jan=>3500?
Pourquoi vous exécutez la même requête SQL deux fois?
Qu'attendez-vous
Qu'attendez-vous
array(substr(trim($mon), 0, -1))
faire? Tout cela n'est convertir la chaîne en un tableau, qui vous donne un tableau avec un seul élément. array('1, 2, 3')
ne pas faire un tableau de 3 éléments, il fait un tableau sur un seul élément, la chaîne '1, 2, 3'
. Pour transformer une chaîne en un tableau, utilisez explode
. $array = explode(', ', '1, 2, 3);
.OriginalL'auteur scireon | 2013-02-04
Vous devez vous connecter pour publier un commentaire.
Vous êtes bien trop compliquer ce problème. Cela peut être fait simplement, avec moins de boucles.
Tout d'abord, vous n'aurez qu'à exécuter le SQL une fois. Deuxièmement, construire le tableau de la 1ère boucle.
Vrai, j'ai juste copié le code de la question.
OriginalL'auteur Rocket Hazmat
Pourquoi ne pas vous venez de le faire:
Aucun, nous venons juste de poster en même temps. Il/elle me battre pour elle.
C'est parce que je suis un ninja ^^
OriginalL'auteur DiscoInfiltrator