PHP est-il adapté aux structures de données et aux algorithmes ?
Pour les apprendre, oui, à condition d'abandonner une habitude : sortir un array pour tout. Le tableau de PHP est assez souple pour être une liste, un dictionnaire et une pile, et c'est justement ce qui masque le coût de chaque opération. Construis les structures toi-même, et PHP devient un langage tout à fait valable pour raisonner sur les algorithmes, et le choix naturel pour passer tes entretiens si PHP est ton métier.
Quelles classes SPL correspondent à quelles structures de données ?
SplStack et SplQueue sont une pile et une file, toutes deux construites sur SplDoublyLinkedList ; SplMinHeap et SplMaxHeap sont des tas ; SplPriorityQueue est un tas-max ordonné par priorité ; et SplFixedArray est un tableau de taille fixe à indices entiers qui consomme moins de mémoire qu'un array. L'array ordinaire est ta table de hachage. Il n'existe pas de classe pour les arbres, les tries ou les graphes : ceux-là, tu les écris toi-même, aux étapes un et deux.
Pourquoi array_shift est-il lent pour une file en PHP ?
Parce qu'après avoir retiré le premier élément, il renumérote à partir de zéro toutes les clés entières restantes, ce qui touche tout le tableau : une file construite sur array_shift coûte O(n) par retrait, et un temps quadratique pour être vidée. Utilise plutôt SplQueue, ou garde un indice de tête dans le tableau et fais-le avancer. L'étape un te fait construire une file toi-même, et c'est le moyen le plus sûr de voir la différence.
sort() est-il stable en PHP ?
Depuis PHP 8.0, oui : sort(), usort(), asort() et les autres fonctions de tri conservent les éléments égaux dans leur ordre d'origine. Avant la 8.0, elles ne faisaient pas cette promesse, donc un code qui dépendait de l'ordre des éléments égaux pouvait se comporter différemment d'une version à l'autre. Parmi les huit tris de l'étape trois, le tri fusion et le tri par insertion sont stables, le tri rapide et le tri par tas ne le sont pas ; après cette étape, tu sais pourquoi.
Quels cours de ce parcours ne sont pas enseignés en PHP ?
Trois : la programmation dynamique et la série d'entretiens en Python, enseignées en Python, et la manipulation de bits, enseignée en C++. Ces trois cours figurent après les étapes, chacun avec un lien qui l'ouvre dans son propre langage. En PHP, une table de mémoïsation est un array indexé par sous-problème. Un piège quand tu portes des astuces sur les bits : si les deux opérandes de &, | ou ^ sont des chaînes, PHP travaille sur les valeurs en octets de leurs caractères et renvoie une chaîne, alors assure-toi d'abord que les valeurs sont des entiers.
Faut-il connaître PHP avant de commencer ce parcours ?
Au minimum les fonctions, les tableaux, les boucles et les classes, puisqu'un nœud est naturellement un objet doté d'une propriété $next. Si c'est nouveau pour toi, le cours PHP de Coddy t'y amène d'abord, gratuitement, et ce parcours prend le relais là où il s'arrête.