Assoziative arrays mit PHP durchsuchen

Wer ein Array mit mehreren assoziativen Arrays nach einem bestimmten Wert durchsuchen will, verwendet in den meisten Fällen instinktiv eine foreach-Schleife mit if-Abfrage. PHP bietet allerdings die ein oder andere Funktion an, mit der sich das deutlich eleganter lösen lässt. Und das funktioniert wie folgt:

<?php

$characters = [
	[ 'name' => 'Gandalf', 'race' => 'Ainur' ],
	[ 'name' => 'Aragorn', 'race' => 'Men' ],
	[ 'name' => 'Legolas', 'race' => 'Elves' ]
];

$index = array_search('Legolas', array_column($characters, 'name'));
var_dump($characters[$index]['race']); // Ausgabe: "Elves"

Die Funktionen array_search() und array_column() durchsuchen das Array $characters nach dem Namen „Legolas“ und geben den ersten gefunden Index zurück.

Durch die Kombination der beiden Funktionen wird das Skript deutlich kürzer und übersichtlicher, als wenn eine Schleife verwendet worden wäre.

Smartphone-Weiche für App-Stores über .htaccess

Mit dem folgenden Snippet können Anfragen auf /app automatisch auf den jeweiligen App-Store des Endgeräts weitergeleitet werden:

# /app-Weiterleitungen
# Android
RewriteCond %{HTTP_USER_AGENT} "android" [NC]
RewriteRule ^app/?$ https://play.google.com/store/apps/details?id=com.ninegag.android.app [NC,R=301,L]
# iOS
RewriteCond %{HTTP_USER_AGENT} (iphone|ipad|ipod) [NC]
RewriteRule ^app/?$ https://apps.apple.com/app/id545551605 [NC,R=301,L]
# Fallback
RewriteRule ^app/?$ https://about.9gag.com/ [NC,R=301,L]

Das Snippet ist für 9gag.com/app ausgelegt.

Über die Rewrite-Conditions wird der User-Agent auf die Keywords „Android“ bzw. „iPhone“ oder „iPad“ abgefragt. Die Rewrite-Rule verweist dann auf die URL des App-Stores, das zum Endgerät passt. Für den Fall, dass keine App für das Endgerät vorliegt, wurde zusätzlich noch ein Fallback eingebaut.

foreach-Schleife in JavaScript

Viele wissen es gar nicht, aber es gibt in JavaScript ein Äquivalent zur foreach-Schleife aus PHP — und das ganz ohne zusätzliche Libraries wie jQuery.

View Code JAVASCRIPT
var meinArray = ["Apfel", "Birne", "Banane"];
for(var i in meinArray) {
    document.write(meinArray[i] + "<br/>");
}

Das gleiche funktioniert übrigens auch bei Objekten:

View Code JAVASCRIPT
var meinObjekt = {
    apple: "Apfel",
    pear: "Birne",
    banana: "Banane"
};
for(var key in meinObjekt) {
    document.write(meinObjekt[key] + "<br/>");
}