Un entier est unsigned en PHP, il n'existe pas d'entier signé. Je comprends qu'on veuille aller au-delà des 2 milliards, mais hélas tu ne pourras pas
Euh, non c'est précisément le contraire…
En PHP, tous les entiers sont signés. Et d'ailleurs je ne comprends pas la question. Dans la mesure où si tu fais $machin = -$machin; , quelquesoit le contenu de ta variable, tu obtiendras son inverse. Je ne vois donc pas où se situe ton problème…
En effet j'avais inversé, tous les entiers PHP sont signés, et il est impossible de lui faire manipuler des entiers non signés.
Tu ne vois pas problème ? Un entier non signé peut être deux fois plus gros qu'un entier signé, puisqu'ils sont tous deux sur 32 bits, sauf qu'un entier signé doit en plus porter l'information du signe (heureusement qu'un bit suffit pour ça) et sa valeur absolue ne tient donc que sur 31 bits.
Maximum d'un entier signé : 2^31-1
Maximum d'un entier non signé : 2^32-1
Et comme on n'a pas non plus de notion de bigint, on est niqué de toute façon.
Essaie de faire un intval(3000000000) pour rigoler
Après si c'est juste pour être sûr d'avoir un nombre positif, aucun intérêt de se poser la question du type, signe-le simplement en positif en prenant sa valeur absolue avec abs().