Im Multidimensionales array nach teilstrings durchsuchen!

JesusFreak777

Erfahrenes Mitglied
Hallo,

Ich hab hier eine Funktion mit der ich in einem Unterarray nach nen String suchen kann!

PHP:
	function search($array, $key, $value) {
		$results = array();

		if (is_array($array)){

			if (isset($array[$key]) && $array[$key] == $value) {
				$results[] = $array;
			}

			foreach ($array as $subarray) {
				$results = array_merge($results, search($subarray, $key, $value));
			}

		}

		return $results;
	}
Allerdings, finde ich immer nur werte die genau 1:1 gesucht werden!


Jetzt die Frage:
Was muss ich tun um die Funktion so umzubauen das ich nach Teilstrings suchen kann (also nur ausschnitte eines ganzen Strings)?

Das ergebniss soll dann, genau wie da ein array mit allen Werten sein die meiner Suche entsprechen!

z.B. wenn ich eine Userdatenbank durchsuche und ich um unterarray Münch suchen, kommen alle User die aus München, Münchberg,...

Vielen Dank für jede Hilfe!
 
Arbeite mit strpos()/stripos()
PHP:
//ersetze 
$array[$key] == $value
//durch
(stripos($value, $array[$key]) !== false)
 
Hallo,

erstmal Danke!
eigentlich ganz logisch!

allerdings funktioniert das leider nicht!

wenn ich nen Kompletten wert eingeben (wie er im Array steht) kommt genau das unter Array dabei raus! Aber wenn ich nur nen teil eingebe kommt nichts :/

Gruß
 
Zeig mal ein Beispiel-Array und ein Beispiel-Suchwert
Sowie das Script, dass diese Funktion aufruft
 
PHP:
	function search($array, $key, $value) { 
		$results = array(); 
	
		if (is_array($array)){ 
	
			if (isset($array[$key]) && (stripos($value, $array[$key]) !== false)) { 
				$results[] = $array; 
			} 
	
			foreach ($array as $subarray) { 
				$results = array_merge($results, search($subarray, $key, $value)); 
			} 
	
		} 
	
		return $results; 
	}  
	
	$array = array(
						0 => array(
							"ID" => "12", 
							"Ort" => "München"
							),
						1 => array(
							"ID" => "13", 
							"Ort" => "Münchberg"
							),
						2 => array(
							"ID" => "14", 
							"Ort" => "Hamburg"
							),
						3 => array(
							"ID" => "15", 
							"Ort" => "Bamberg"
							),
						4 => array(
							"ID" => "16", 
							"Ort" => "Bamberg"
							)
						);
						
	echo "<pre>";
	print_r($array);
	echo "</pre>";

	$s1 = search($array, "Ort", "berg");
	
	echo "<pre>";
	print_r($s1);
	echo "</pre>";


Code:
Array
(
    [0] => Array
        (
            [ID] => 12
            [Ort] => München
        )

    [1] => Array
        (
            [ID] => 13
            [Ort] => Münchberg
        )

    [2] => Array
        (
            [ID] => 14
            [Ort] => Hamburg
        )

    [3] => Array
        (
            [ID] => 15
            [Ort] => Bamberg
        )

    [4] => Array
        (
            [ID] => 16
            [Ort] => Bamberg
        )

)
Array
(
)

bei:
PHP:
	$s1 = search($array, "Ort", "Bamberg");

Code:
Array
(
    [0] => Array
        (
            [ID] => 15
            [Ort] => Bamberg
        )

    [1] => Array
        (
            [ID] => 16
            [Ort] => Bamberg
        )

)
 
Du hast den Suchbegriff und den Wert verkehrt herum....
PHP:
function array_find_in_subarray($array, $key, $search){
	$retArray = array();
	foreach($array as $index => $node){
		if(stripos($node[$key], $search) !== false) $retArray[$index] = $node;
	}
	return $retArray;
}
 
Zurück