Je reçois msg_data
de requête MySQL avec ORDER BY
msg_time clause. J'utilise ensuite utiliser la boucle foreach pour créer un objet JS d'objets comme celui-ci:Pourquoi l'objet JS se trie-t-il toujours par clé?
<script type="text/javascript">
var active_swaps = {
<?php if (is_array($msg_data) || $msg_data instanceof Traversable):?>
<?php foreach($msg_data as $msg_item):?>
<?php echo $msg_item['id'];?> : <?php echo json_encode($msg_item);?>,
<?php endforeach;?>
<?php endif;?>
};
</script>
si je vérifie $msg_data
avec var_dump
je reçois:
array (size=3)
0 =>
array (size=20)
'id' => string '5' (length=1)
'user1_id' => string '1' (length=1)
'user2_id' => string '2' (length=1)
'hasto' => string '2' (length=1)
'requested' => string '2017-01-20 14:28:00' (length=19)
'accepted' => null
'swapped1' => null
'swapped2' => null
'rejected' => null
'rejected_by' => null
'swap_seen' => null
'msg_id' => string '23' (length=2)
'sender_id' => string '1' (length=1)
'msg' => string 'awdwadwd' (length=8)
'msg_time' => string '2017-01-20 15:58:06' (length=19)
'swap_id' => string '5' (length=1)
'seen' => null
'user1username' => string 'user1' (length=5)
'user2username' => string 'user2' (length=5)
'online' => string 'false' (length=5)
1 =>
array (size=20)
'id' => string '7' (length=1)
'user1_id' => string '1' (length=1)
'user2_id' => string '2' (length=1)
'hasto' => string '2' (length=1)
'requested' => string '2017-01-20 15:57:51' (length=19)
'accepted' => null
'swapped1' => null
'swapped2' => null
'rejected' => null
'rejected_by' => null
'swap_seen' => null
'msg_id' => string '22' (length=2)
'sender_id' => string '1' (length=1)
'msg' => string 'awdawd' (length=6)
'msg_time' => string '2017-01-20 15:58:00' (length=19)
'swap_id' => string '7' (length=1)
'seen' => null
'user1username' => string 'user1' (length=5)
'user2username' => string 'user2' (length=5)
'online' => string 'false' (length=5)
2 =>
array (size=20)
'id' => string '6' (length=1)
'user1_id' => string '1' (length=1)
'user2_id' => string '2' (length=1)
'hasto' => string '2' (length=1)
'requested' => string '2017-01-20 15:11:58' (length=19)
'accepted' => null
'swapped1' => null
'swapped2' => null
'rejected' => null
'rejected_by' => null
'swap_seen' => null
'msg_id' => string '20' (length=2)
'sender_id' => string '1' (length=1)
'msg' => string 'awdadwdwa' (length=9)
'msg_time' => string '2017-01-20 15:46:44' (length=19)
'swap_id' => string '6' (length=1)
'seen' => null
'user1username' => string 'user1' (length=5)
'user2username' => string 'user2' (length=5)
'online' => string 'false' (length=5)
Cependant dans JS console.log(active_swaps);
renvoie cette:
Object {5: Object, 6: Object, 7: Object}
Peu importe ce que je fais, il est toujours trié par clé (swap_id)! Apprécierait que quelqu'un puisse expliquer pourquoi cela se produit?
Peut-être que ce n'est pas très bon d'utiliser 'numbers' pour les propriétés de l'objet json !? Testez-le avec 'echo" id {$ msg_item ['id']} ";'. – JustOnUnderMillions
L'ordre des propriétés dans un objet javascript * n'est pas garanti *: http://stackoverflow.com/questions/5525795/does-javascript-guarantee-object-property-order –
Copie possible de [La commande de propriété d'objet de garantie JavaScript est-elle valide? ] (http://stackoverflow.com/questions/5525795/does-javascript-guarantee-object-property-order) –