Faits :
A.
Par jugement du 8 octobre 2018, le Tribunal correctionnel de la République et canton de Genève a révoqué la libération conditionnelle ordonnée par le Tribunal d'application des peines et mesures le 12 janvier 2018 et a condamné X._, pour dénonciation calomnieuse, conduite en état d'ébriété qualifiée, conduite sans permis de conduire, infraction à la LStup, séjour illégal et exercice d'une activité lucrative sans autorisation, à une peine privative de liberté d'ensemble de deux ans et huit mois. Il a en outre ordonné l'expulsion du prénommé du territoire suisse pour une durée de trois ans.
B.
Par arrêt du 5 mars 2019, la Chambre pénale d'appel et de révision de la Cour de justice genevoise, statuant sur l'appel de X._ et sur l'appel joint formé par le ministère public contre le jugement du 8 octobre 2018, a réformé celui-ci en ce sens que le prénommé est condamné, pour dénonciation calomnieuse, conduite en état d'ébriété qualifiée, conduite sans permis de conduire, infraction à la LStup, entrée illégale, séjour illégal et exercice d'une activité lucrative sans autorisation, à une peine privative de liberté d'ensemble de deux ans et six mois. Elle a confirmé le jugement pour le surplus.
Il en ressort notamment ce qui suit.
B.a. X._ a indiqué qu'il était né en 1985 à Alger ou Annaba et être de nationalité algérienne. Il vit en concubinage avec son amie et leur fils - né en 2016 - sur lequel tous deux exercent une autorité parentale conjointe. Selon ses dires, X._ a obtenu un baccalauréat en Algérie et y a effectué divers emplois non déclarés. Il a onze frères et soeurs ainsi que six demi-frères. Il a admis être retourné à deux reprises en Algérie depuis son arrivée en Suisse en 2004.
Son casier judiciaire fait état d'une condamnation, en 2009, pour dommages à la propriété, violation de domicile, délit manqué de vol, contravention à la LStup et séjour illégal, d'une condamnation, en 2011, pour délit contre la LStup et séjour illégal, d'une condamnation, en 2012, pour séjour illégal, d'une condamnation, en 2013, pour séjour illégal, d'une condamnation, la même année, pour vol, entrée et séjour illégaux et contravention à la LStup, d'une condamnation, en 2014, pour conduite d'un véhicule automobile sans le permis de conduire requis, d'une condamnation, la même année, pour injure, d'une condamnation, en 2015, pour séjour illégal, lésions corporelles simples, menaces et injure, ainsi que d'une condamnation, en 2016, pour violence ou menace contre les autorités et les fonctionnaires.
Le 12 janvier 2018, X._ a été libéré conditionnellement de la peine privative de liberté prononcée à son encontre le 8 juillet 2015 qu'il purgeait. Le solde de la peine s'élevait à 60 jours.
B.b. Le 12 juin 2016, X._ a conduit un véhicule automobile alors qu'il n'était pas titulaire du permis de conduire requis pour celui-ci. Il a par la suite produit un duplicata de permis de conduire algérien falsifié.
B.c. Le 9 août 2016, le Service des automobiles et de la navigation du canton de Vaud a prononcé une interdiction de conduire de sécurité à l'encontre de X._.
Le 30 octobre 2016, X._ a circulé en automobile. Un contrôle de son état physique a révélé une alcoolémie de 0,54 mg/l. Le prénommé s'est présenté aux policiers comme étant A._, époux de la détentrice du véhicule contrôlé et compagne de X._.
B.d. Le 11 juin 2017, X._ a été appréhendé par les gardes-frontière à la douane de Thônex-Vallard, alors qu'il pénétrait sans passeport valable sur le territoire suisse.
B.e. Le 1er février 2018, X._ a été interpellé au volant d'un véhicule dans lequel ont été découverts 54'328,7 g bruts, ou 52'708,3 g nets de haschich, marchandise qui représentait une valeur de 540'000 francs.
B.f. X._ a exercé diverses activités lucratives en Suisse, sans autorisation, entre 2015 et octobre 2017.
Le prénommé a en outre, entre décembre 2014 et février 2018, à l'exception de quelques périodes, séjourné sur le territoire suisse sans autorisation.
C.
X._ forme un recours en matière pénale au Tribunal fédéral contre l'arrêt du 5 mars 2019, en concluant, avec suite de frais et dépens, à sa réforme en ce sens que sa peine privative de liberté est réduite et que son expulsion du territoire suisse n'est pas ordonnée. Il sollicite par ailleurs le bénéfice de l'assistance judiciaire.

Considérant en droit :
1.
Le recourant conteste la quotité de la peine privative de liberté qui lui a été infligée.
1.1. L'<ref-law> prévoit que le juge fixe la peine d'après la culpabilité de l'auteur. Il prend en considération les antécédents et la situation personnelle de ce dernier ainsi que l'effet de la peine sur son avenir (al. 1). La culpabilité est déterminée par la gravité de la lésion ou de la mise en danger du bien juridique concerné, par le caractère répréhensible de l'acte, par les motivations et les buts de l'auteur et par la mesure dans laquelle celui-ci aurait pu éviter la mise en danger ou la lésion, compte tenu de sa situation personnelle et des circonstances extérieures (al. 2). La culpabilité de l'auteur doit être évaluée en fonction de tous les éléments objectifs pertinents, qui ont trait à l'acte lui-même, à savoir notamment la gravité de la lésion, le caractère répréhensible de l'acte et son mode d'exécution. Du point de vue subjectif, sont pris en compte l'intensité de la volonté délictuelle ainsi que les motivations et les buts de l'auteur. A ces composantes de la culpabilité, il faut ajouter les facteurs liés à l'auteur lui-même, à savoir les antécédents, la réputation, la situation personnelle (état de santé, âge, obligations familiales, situation professionnelle, risque de récidive, etc.), la vulnérabilité face à la peine, de même que le comportement après l'acte et au cours de la procédure pénale (<ref-ruling> consid. 9.1 p. 147; <ref-ruling> consid. 6.1.1 p. 66 s.). Le juge dispose d'un large pouvoir d'appréciation dans le cadre de la fixation de la peine. Le Tribunal fédéral n'intervient que lorsque l'autorité cantonale a fixé une peine en dehors du cadre légal, si elle s'est fondée sur des critères étrangers à l'<ref-law>, si des éléments d'appréciation importants n'ont pas été pris en compte ou, enfin, si la peine prononcée est exagérément sévère ou clémente au point de constituer un abus du pouvoir d'appréciation (<ref-ruling> consid. 1.2 p. 319).
Aux termes de l'<ref-law>, si, en raison d'un ou de plusieurs actes, l'auteur remplit les conditions de plusieurs peines de même genre, le juge le condamne à la peine de l'infraction la plus grave et l'augmente dans une juste proportion. Il ne peut toutefois excéder de plus de la moitié le maximum de la peine prévue pour cette infraction. Il est en outre lié par le maximum légal de chaque genre de peine (al. 1). Si le juge doit prononcer une condamnation pour une infraction que l'auteur a commise avant d'avoir été condamné pour une autre infraction, il fixe la peine complémentaire de sorte que l'auteur ne soit pas puni plus sévèrement que si les diverses infractions avaient fait l'objet d'un seul jugement (al. 2).
1.2. La cour cantonale a exposé que la faute du recourant était lourde. Les infractions qui lui étaient reprochées avaient été commises entre 2014 et 2018. Le recourant n'avait pas mis un terme à ses activités délictueuses avec la naissance de son enfant en 2016, puisqu'il avait, après cet événement, commis une dénonciation calomnieuse ainsi que la plupart des infractions en matière de circulation routière. En outre, le recourant s'était investi dans un trafic de stupéfiants d'importance immédiatement après avoir bénéficié d'une libération conditionnelle en janvier 2018. Si la gravité de ses agissements concernant le travail illégal était relative, les autres infractions s'inscrivaient dans la persistance d'une activité délinquante et d'un mépris de l'ordre public qui ne semblait pas avoir pris fin avec sa paternité. Cette activité n'avait été stoppée que grâce à l'arrestation de l'intéressé en raison du transport d'une très importante quantité de haschich. La collaboration du recourant à l'instruction ne pouvait être qualifiée de bonne. Celui-ci avait adapté ses déclarations aux besoins de la cause et avait admis les faits reprochés lorsqu'il ne pouvait plus en aller autrement. Il avait ainsi présenté des explications toujours plus invraisemblables concernant le permis de conduire dont il prétendait être titulaire et avait refusé de déverrouiller son téléphone pour les enquêteurs. Contrairement à ce qu'il avait soutenu, le recourant n'avait pas spontanément annoncé aux autorités la dénonciation calomnieuse du 30 octobre 2016, puisqu'il avait fallu attendre la plainte pénale du tiers dénoncé à tort et les investigations de la police pour que l'intéressé admît finalement ces faits. Le recourant ne les avait rapidement avoués qu'à sa compagne, l'épouse du tiers faussement dénoncé, non sans lui avoir demandé que son nom ne fût pas communiqué aux autorités. Selon l'autorité précédente, les mobiles du recourant avaient été égoïstes, puisque ce dernier avait agi dans un but d'auto-favorisation et de facilité, pour s'enrichir à moindre effort ou pour se soustraire aux règles de la vie en société ou aux exigences légales. Sa situation personnelle n'était pas différente de celle d'autres jeunes hommes pères de famille. C'étaient surtout sa détention et ses conséquences sur lui-même et ses proches qui affectaient le recourant, davantage qu'une réelle prise de conscience de la gravité de ses actes. Les regrets exprimés avaient d'ailleurs été d'abord tournés vers lui-même. Par ailleurs, le recourant n'avait contribué que de façon limitée à l'entretien de sa famille, puisque son apport n'avait impliqué qu'une fraction mineure des revenus qu'il semblait avoir obtenus. Sa préoccupation pour la situation financière de sa famille devait être relativisée, car l'intéressé avait consacré une somme forcément importante à une intervention de chirurgie esthétique en 2017, alors que sa compagne supportait des charges de loyer et d'entretien pour leur enfant commun.
La cour cantonale a indiqué qu'une partie des infractions commises, soit le séjour et le travail illégaux, avait pris place avant une condamnation du recourant en juillet 2015. Compte tenu de la faible gravité des infractions concernées et en application de l'<ref-law>, l'autorité précédente a considéré que les agissements en question ne devaient pas donner lieu au prononcé d'une peine complémentaire. Elle a ensuite signalé que l'infraction de dénonciation calomnieuse était abstraitement la plus grave. En appliquant l'<ref-law>, la cour cantonale a ainsi fixé la peine relative à ladite infraction. A cet égard, elle a relevé qu'il ne s'agissait pas d'une infraction légère. Le recourant n'avait pas hésité à abuser de l'identité d'un tiers pour se faire passer pour lui, dans le but de se soustraire à une possible arrestation provisoire après avoir circulé en état d'ébriété et sans permis de conduire. Il n'avait finalement reconnu avoir été le conducteur concerné qu'après que le tiers mis en cause eut déposé plainte contre lui et non sans avoir préalablement cherché à convaincre celui-ci de dissimuler son identité. Ces agissements devaient entraîner une peine privative de liberté de six mois. Cette peine devait être aggravée de deux mois pour tenir compte des infractions de conduite en état d'ébriété qualifiée et de conduite sans permis - en état de récidive - commises le 30 octobre 2016. Le recourant avait par ailleurs conduit, à deux autres reprises, sans permis de conduire, ce qui justifiait encore une aggravation de la peine privative de liberté de deux mois supplémentaires. La cour cantonale a ensuite exposé que le recourant avait transporté du haschich et que ces agissements s'étaient inscrits dans le cadre d'un trafic d'une ampleur inhabituelle, car une telle quantité de stupéfiants ne pouvait être confiée à n'importe qui. Le recourant avait donc su susciter la confiance de trafiquants d'envergure, étant rappelé que la valeur de la drogue s'élevait à plusieurs centaines de mille francs. Le recourant n'apparaissait pas comme un simple rouage ou passeur, mais comme un élément important - au rôle certes ponctuel - dans un trafic organisé. Ces actes devaient encore donner lieu à une peine privative de liberté de 16 mois. En outre, le recourant avait travaillé illégalement et s'était accommodé de cette situation, cela durant plus de deux ans. Il convenait enfin, selon l'autorité précédente, de tenir compte de la révocation de la libération conditionnelle dont il avait bénéficié en janvier 2018, le solde de la peine s'élevant à 60 jours. Ainsi, la peine privative de liberté d'ensemble devait atteindre deux ans et six mois.
1.3.
1.3.1. Le recourant relève tout d'abord qu'en additionnant les diverses quotités de peine fixées pour aggraver la peine privative de liberté devant sanctionner l'infraction la plus grave, un total de 28 mois - et non de 30 mois - apparaîtrait. Il omet cependant, dans son calcul, de tenir compte de la peine devant sanctionner les infractions à l'art. 115 al. 1 let. c de la loi fédérale sur les étrangers et l'intégration (LEI [LEtr jusqu'au 31 décembre 2018]; RS 142.20), à propos desquelles la cour cantonale a relevé qu'il n'y avait "pas matière à renoncer à prononcer une sanction". On comprend donc de l'arrêt attaqué que l'autorité précédente a aggravé la peine privative de liberté de deux mois supplémentaires à raison de ces infractions.
1.3.2. Le recourant critique la quotité de la peine privative de liberté fixée pour sanctionner l'infraction de dénonciation calomnieuse. Il se borne, à cet égard, à relever diverses circonstances ayant entouré la commission de l'infraction, lesquelles ressortent toutes de le l'arrêt attaqué, auquel l'intéressé se réfère d'ailleurs abondamment. On rappellera, sur ce point, qu'il importe peu qu'un élément n'apparaisse pas expressément dans la motivation de la peine mais ailleurs dans la décision. La cour cantonale n'est pas tenue de le répéter au stade de la fixation de la peine car le jugement forme un tout et on admet que le juge garde à l'esprit l'ensemble des éléments qui y figurent (cf. arrêt 6B_293/2019 du 29 mars 2019 consid. 2.3 et les références citées).
Par ailleurs, la cour cantonale pouvait, à bon droit, tenir compte principalement de la volonté du recourant de se soustraire à la justice, indépendamment d'un éventuel dessein de nuire à autrui, puisque l'<ref-law> protège en particulier l'administration de la justice. S'agissant de la prétendue "bonne collaboration" du recourant, il apparaît que la cour cantonale n'a pas retenu, comme le prétend celui-ci, qu'il aurait attendu le dépôt d'une plainte pénale pour révéler ses agissements à son amie. On ne voit cependant pas en quoi l'aveu d'une infraction à sa concubine - et non aux autorités - devrait amoindrir la culpabilité du recourant. Ce dernier ne démontre aucunement que l'autorité précédente aurait violé le droit sur ce point.
1.3.3. Le recourant conteste la peine arrêtée pour sanctionner les infractions de conduite en état d'ébriété qualifiée et de conduite sans permis de conduire commises le 30 octobre 2016. L'autorité précédente a uniquement relevé, dans sa motivation consacrée à ce volet de l'affaire, que l'intéressé avait commis cette seconde infraction en situation de récidive.
Le recourant soutient tout d'abord que la motivation de la cour cantonale serait insuffisante pour comprendre la peine en question.
Selon la jurisprudence, la motivation doit justifier la peine prononcée, en permettant de suivre le raisonnement adopté, même si le juge n'est pas tenu d'exprimer en chiffres ou en pourcentages l'importance qu'il accorde à chacun des éléments qu'il cite, étant rappelé que plus la peine est élevée, plus la motivation doit être complète (cf. <ref-law>; <ref-ruling> consid. 1.2). En l'occurrence, on comprend de l'arrêt attaqué que, selon la cour cantonale, toutes les infractions - y compris celles concernant les règles de la circulation routière commises le 30 octobre 2016 - devaient être sanctionnées par des peines privatives de liberté eu égard à la "situation personnelle" de l'intéressé. Pour le reste, compte tenu de la faiblesse des peines concernées - s'agissant d'infractions pouvant chacune entraîner en théorie le prononcé d'une peine privative de liberté de trois ans (cf. art. 91 al. 2 let. a et 95 al. 1 let. a LCR) -, la motivation de l'autorité précédente - qui doit être comprise à la lecture de l'arrêt attaqué dans son intégralité - permet de comprendre que celle-ci a essentiellement tenu compte de la situation de récidive spéciale dans laquelle s'était trouvé le recourant. Cela satisfait aux exigences légales et jurisprudentielles en la matière, étant en outre rappelé qu'un recours ne saurait être admis simplement pour améliorer ou compléter un considérant lorsque la décision rendue apparaît conforme au droit (<ref-ruling> consid. 5.6 p. 61).
Enfin, dans la mesure où le recourant tente de minimiser sa faute en affirmant qu'il n'aurait "pas eu l'intention de conduire en état d'ébriété", celui-ci ne démontre pas en quoi la cour cantonale aurait excédé son large pouvoir d'appréciation en fixant la peine concernée.
1.3.4. Ce qui précède vaut également s'agissant des infractions à la LCR commises antérieurement et postérieurement au 30 octobre 2016, à propos desquelles la cour cantonale a relevé que les conduites sans permis de conduire s'étaient produites de manière répétée, alors même que le recourant avait déjà été condamné pour ce comportement. Cette motivation - lue à la lumière des considérations développées en matière de fixation de la peine - permet de saisir les éléments pris en compte pour fixer les peines concernées, contrairement à ce qu'affirme l'intéressé.
1.3.5. Le recourant conteste la peine fixée pour sanctionner son infraction à la LStup du 1er février 2018.
A cet égard, contrairement à ce que soutient le recourant, la cour cantonale n'a aucunement indiqué que celui-ci devait être considéré comme un "trafiquant de drogue de grande envergure", mais simplement qu'il n'avait pas joué un rôle "très secondaire" dans le trafic, compte tenu de la quantité de stupéfiants transportée. On ne perçoit pas, partant, la pertinence de l'argumentation du recourant visant à exclure un statut que l'autorité précédente ne lui a nullement reproché. Par ailleurs, compte tenu de l'importance et de la valeur de la marchandise transportée, il n'était pas arbitraire (cf. <ref-law>) de retenir que le recourant avait gagné la confiance des trafiquants, lesquels ne lui auraient, à défaut, pas confié un chargement représentant plus d'un demi-million de francs de haschich. Enfin, l'argumentation du recourant est irrecevable dans la mesure où elle s'écarte de l'état de fait de la cour cantonale, par lequel le Tribunal fédéral est lié (cf. <ref-law>), puisque l'intéressé se livre à une présentation totalement appellatoire des motifs l'ayant poussé à se lancer dans le trafic de stupéfiants.
Derechef, force est de constater que le recourant, qui tente de minimiser l'importance de son implication dans le trafic, ne démontre nullement que la cour cantonale aurait excédé le large pouvoir d'appréciation dont elle disposait pour fixer la peine en question.
1.3.6. Le recourant prétend que sa collaboration durant l'instruction aurait été bonne. On ne voit pourtant pas en quoi le fait d'avoir admis des infractions - soit celle commise contre la LStup, celles contre les règles de la circulation routière du 30 octobre 2018 ou celles en matière de LEI - durant ou après des interpellations, et alors que l'on perçoit mal comment celles-ci auraient alors pu être contestées, permettrait de retenir l'existence d'une telle collaboration, l'intéressé ne précisant pas en quoi il aurait, d'une quelconque manière, facilité le travail des autorités pénales.
1.3.7. Le recourant critique la prise en compte de ses antécédents. Il se méprend lorsqu'il suggère que la cour cantonale aurait dû expressément signaler dans quelle mesure ceux-ci ont influé sur la fixation des sanctions concernées, aucune exigence de cet ordre ne ressortant de la loi ou de la jurisprudence. Pour le reste, l'intéressé discute la date de ses précédentes condamnations ainsi que la nature des infractions commises - éléments qui ressortent tous de l'arrêt attaqué -, sans démontrer en quoi la cour cantonale aurait mal apprécié ces aspects au point de violer le droit fédéral.
1.3.8. Le recourant reproche enfin à l'autorité précédente de ne pas avoir tenu correctement compte de sa situation personnelle et de son comportement postérieur à sa condamnation. Il se borne, une fois encore, à répéter des éléments qui ressortent de l'arrêt attaqué, sans démontrer en quoi il aurait convenu de leur accorder un poids différent dans la fixation de la sanction. On ne perçoit pas, en particulier, dans quelle mesure son attitude au sein de sa famille aurait dû conduire la cour cantonale à prononcer une peine inférieure à celle retenue.
1.4. Compte tenu de ce qui précède, le recourant ne démontre pas que la cour cantonale aurait violé le droit en lui infligeant une peine privative de liberté d'ensemble de deux ans et six mois. Le grief doit être rejeté dans la mesure où il est recevable.
2.
Le recourant reproche à l'autorité précédente d'avoir ordonné son expulsion du territoire suisse.
2.1. Aux termes de l'<ref-law>, le juge peut expulser un étranger du territoire suisse pour une durée de trois à quinze ans si, pour un crime ou un délit non visé à l'<ref-law>, celui-ci a été condamné à une peine ou a fait l'objet d'une mesure au sens des art. 59 à 61 ou 64 CP.
Comme toute décision étatique, le prononcé d'une expulsion non obligatoire doit respecter le principe de la proportionnalité ancré aux art. 5 al. 2 et 36 al. 2 et 3 Cst. Il convient ainsi d'examiner si l'intérêt public à l'expulsion l'emporte sur l'intérêt privé de la personne à demeurer en Suisse. Une telle pesée des intérêts répond également aux exigences découlant de l'art. 8 par. 2 CEDH concernant les ingérences dans la vie privée et familiale (cf. arrêts 6B_549/2019 du 29 mai 2019 consid. 2.1; 6B_242/2019 du 18 mars 2019 consid. 1.1; 6B_1314/2018 du 29 janvier 2019 consid. 5.1). S'agissant d'un étranger arrivé en Suisse à l'âge adulte, l'examen de la proportionnalité suppose une prise en compte de la nature et de la gravité de la faute, du temps écoulé depuis la commission de l'infraction, du comportement de l'auteur durant cette période, de la durée de son séjour en Suisse, de la solidité des liens sociaux, culturels et familiaux avec le pays hôte et avec le pays de destination (cf. <ref-ruling> consid. 2.4 p. 149; <ref-ruling> consid. 2.3.3 p. 34 ss; <ref-ruling> consid. 4.3 p. 381; arrêts 6B_549/2019 précité consid. 2.1; 6B_242/2019 précité consid. 1.1; 6B_1314/2018 précité consid. 5.1).
2.2. La cour cantonale a exposé que le recourant pouvait se prévaloir d'un droit au respect de sa vie familiale au sens de l'art. 8 CEDH, eu égard au lien l'unissant à sa compagne et à son fils. Cet aspect ne l'emportait cependant pas sur l'intérêt public à expulser l'intéressé. Même si ce dernier séjournait en Suisse depuis 2004, il n'avait jamais bénéficié d'une autorisation de séjour et son parcours de délinquant illustrait son absence totale d'intégration. Outre les infractions à la législation en matière d'étrangers, son casier judiciaire comportait des condamnations en raison d'infractions contre le patrimoine et l'intégrité corporelle. La diversité des biens juridiques violés démontrait que le recourant n'avait jamais cherché à s'intégrer ou à respecter l'ordre public suisse. La naissance de son fils ne l'avait pas empêché de commettre des infractions répétées, ce qui démontrait une absence de prise de conscience. Ses liens avec l'Algérie étaient manifestes, puisque le recourant avait gardé sans interruption contact avec ses parents sur place et leur avait même rendu visite. Selon les déclarations de l'intéressé, ses parents vivaient dans une situation relativement confortable, de sorte que celui-ci pourrait s'appuyer sur eux et sur sa nombreuse fratrie avec laquelle il admettait avoir de bons contacts. La durée du séjour en Suisse était certes importante, mais elle devait être relativisée puisque celui-ci n'avait jamais été autorisé. Le recourant avait constamment pris des mesures pour séjourner illégalement en Suisse et se soustraire aux autorités qui voulaient le renvoyer. Son attitude démontrait encore son manque de respect pour l'autorité et son séjour en Suisse apparaissait comme la conséquence d'un comportement illicite et non comme le résultat d'une tolérance de la part de l'Etat. Le comportement du recourant depuis la commission de sa dernière infraction était sans particularité, dans la mesure où l'intéressé avait été détenu depuis lors. Pour le reste, un relatif bon comportement durant l'année 2017 n'était pas à ce point notable qu'il permette de considérer que le recourant se serait définitivement détourné de l'illégalité, puisque celui-ci avait pris part à un trafic de stupéfiants en début 2018.
L'autorité précédente a ajouté que le recourant avait été condamné à plusieurs reprises, notamment à des peines privatives de liberté, sans que cela ne le dissuadât de commettre de nouvelles infractions, parfois même quelques jours seulement après une libération. L'intérêt public à l'expulsion était donc manifeste. Cette mesure serait certes douloureuse pour la compagne et l'enfant du recourant, mais ce dernier était responsable de la situation et n'avait pas su saisir les nombreuses chances qui lui avaient été données, par le passé, de demeurer sur le droit chemin. Selon la cour cantonale, des contacts resteraient possibles avec sa famille par le biais des moyens de communication modernes et rien n'empêcherait celle-ci de le visiter en Algérie ou dans un autre pays.
2.3. La pesée des intérêts opérée par la cour cantonale ne prête pas le flanc à la critique, tous les aspects pertinents ayant en l'occurrence été considérés. L'autorité précédente n'a pas ignoré que l'expulsion du recourant porterait atteinte à son droit au respect de sa vie privée et familiale garanti par la Constitution fédérale (art. 13 Cst.) et par l'art. 8 CEDH, en l'éloignant de sa compagne et de son fils. Une telle atteinte, que le recourant évoque longuement en se référant à des éléments qui ressortent de l'arrêt attaqué, n'exclut cependant pas le prononcé de la mesure en question, dès lors que l'intérêt public à l'expulsion l'emporte sur l'intérêt privé de l'intéressé à demeurer en Suisse.
En effet, on peut tout d'abord relever que la Cour européenne des droits de l'Homme estime que, compte tenu des ravages de la drogue dans la population, les autorités sont fondées à faire preuve d'une grande fermeté à l'encontre de ceux qui contribuent à la propagation de ce fléau (cf. arrêts CourEDH K.M. c. Suisse du 2 juin 2015 [requête no 6009/10], § 55; Dalia c. France du 19 février 1998, Recueil CourEDH 1998-I 76 § 54; cf. aussi arrêt 6B_242/2019 précité consid. 1.3). Or, le recourant a notamment pris part à un important trafic de stupéfiants en transportant une quantité considérable de haschich.
On peut également signaler que le recourant ne dispose d'aucun titre de séjour en Suisse. Même si tel avait été le cas, la peine privative de liberté à laquelle il a été condamné dépasse une année, ce qui aurait permis une révocation d'une autorisation - y compris d'une autorisation d'établissement - au regard des art. 62 al. 1 let. b et 63 al. 1 let. a LEI (cf. <ref-ruling> consid. 2.1 p. 147, selon lequel constitue une "peine privative de liberté de longue durée" au sens de l'art. 62 al. 1 let. b LEtr [depuis le 1er janvier 2019 : LEI] toute peine dépassant un an d'emprisonnement).
Le recourant se borne à tenter de relativiser la gravité des infractions commises. Contrairement à ce qu'il affirme, on comprend - à la lecture de l'arrêt attaqué - pourquoi la cour cantonale a considéré que les infractions sanctionnées étaient "graves, tant par leur nature que par leur variété et leur répétition". L'intéressé s'en est pris à de nombreux biens juridiquement protégés, à plusieurs reprises et en affichant un mépris total de l'ordre juridique suisse. Peu importe qu'il eût été condamné pour une infraction simple - et non qualifiée - à la LStup, celle-ci, compte tenu de la quantité de stupéfiants impliquée, étant loin d'être vénielle.
On ne peut davantage suivre le recourant lorsqu'il essaie de minimiser la gravité de ses antécédents et le risque de sombrer à nouveau dans la délinquance. L'intéressé a fait l'objet de neuf condamnations entre 2009 et 2016, pour des infractions variées ayant notamment été sanctionnées par des peines privatives de liberté. Celles-ci ne l'ont aucunement détourné de la délinquance, non plus que la naissance de son fils, après laquelle il a notamment commis l'infraction objectivement la plus grave pour laquelle il a été condamné, soit le trafic de stupéfiants de février 2018.
La durée du séjour du recourant en Suisse n'est certes pas négligeable, mais ce dernier se trompe lorsqu'il reproche à la cour cantonale d'avoir relativisé cet aspect par l'illégalité de sa présence sur le territoire, une telle appréciation s'avérant conforme à la jurisprudence (cf. arrêt 6B_549/2019 précité consid. 2.3 et les références citées). Pour le reste, on ne voit pas en quoi l'autorité précédente aurait violé le droit d'être entendu du recourant en n'évoquant pas dans le détail les liens tissés avec la Suisse, à propos desquels celui-ci mentionne essentiellement ses relations familiales, dont la cour cantonale a bien tenu compte, ou ses activités lucratives illicites pour lesquelles il a notamment été condamné dans la présente procédure. S'agissant de ses liens avec l'Algérie, le recourant s'emploie vainement à les relativiser, mais ne démontre aucunement en quoi les constatations de la cour cantonale - selon lesquelles il dispose d'une famille sur place avec laquelle il a conservé des relations - violeraient le droit. On ne voit d'ailleurs pas en quoi sa réintégration dans ce pays serait désormais plus difficile que son intégration en Suisse. Enfin, les considérations de la cour cantonale concernant la possibilité, pour le recourant, de maintenir des liens avec sa famille par le biais des moyens de communication modernes s'avèrent conformes à la jurisprudence (cf. <ref-ruling> consid. 5.1 p. 96 s. et les références citées), étant rappelé par ailleurs que l'autorité précédente a ordonné l'expulsion pour une durée limitée à trois années, soit le minimum prévu par l'<ref-law>.
2.4. Au vu de ce qui précède, la cour cantonale a, à bon droit, ordonné l'expulsion du recourant du territoire suisse pour une durée de trois années, cette mesure n'apparaissant pas disproportionnée. Le grief doit être rejeté dans la mesure où il est recevable.
3.
Le recours doit être rejeté dans la mesure où il est recevable. Comme il était dénué de chances de succès, la demande d'assistance judiciaire doit être rejetée (<ref-law>). Le recourant, qui succombe, supportera les frais judiciaires (<ref-law>), dont le montant sera fixé en tenant compte de sa situation financière, laquelle n'apparaît pas favorable.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1'200 fr., sont mis à la charge du recourant.
4.
Le présent arrêt est communiqué aux parties et à la Cour de justice de la République et canton de Genève, Chambre pénale d'appel et de révision.
Lausanne, le 4 juillet 2019
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
Le Greffier : Graa