Tach!
Das Problem hierbei ist, dass die Suche quasi umgekehrt stattfinden muss. Der Suchbegriff befindet sich in der Liste. Ansonsten müsste erst ein Teil der Telefonnummer abgeschnitten werden, um damit die Liste zu befragen. Da der Teil aber in der Länge variabel ist, ist das etwas ungünstig.
Ja, deshalb auch drei Suchen - mit zwei, drei und fünf Ziffern (vier Ziffern dann als Ausschlussverfahren). Macht drei binäre Suchen mit je einem Aufwand von 10 Vergleichen. Das ist noch überschaubar. Aber klar, es ist ein Nachteil.
Viel zu aufwendig bei der geringen Datenmenge. Einfach durchlaufen und den Schlüssel mit dem Anfang der Telefonnummer vergleichen.
Was mich zu meiner Kernthese bringt: Um Datenstrukturen zu optimieren muss man ganz genau wissen, wie die Sprache mit den verschiedenen Datenstrukturen intern umgeht. Da ich das bei PHP nicht einschätzen kann mache ich mir außer in eklatanten Ausnahmefällen oft nichtmal allzuviele Gedanken über effizientere Datenstrukturen (immerhin ist die Effizienzbetrachtung hier auch definitiv nicht trivial).
Optimieren wenn Bedarf besteht, ansonsten YAGNI.
dedlfix.