klamm-Forum
Zurück   klamm-Forum > Virtual World > Programmierung

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03.04.2007, 02:11:13   #1 (permalink)
VFB Fan oO
Benutzerbild von timo_hildebrand

ID: 107555
Lose-Remote

Reg: 21.04.2006
Beiträge: 1.117
timo_hildebrand ist ein wunderbarer Anblicktimo_hildebrand ist ein wunderbarer Anblicktimo_hildebrand ist ein wunderbarer Anblicktimo_hildebrand ist ein wunderbarer Anblicktimo_hildebrand ist ein wunderbarer Anblicktimo_hildebrand ist ein wunderbarer Anblick
Standard [PHP] Array Durchsuchen

Hi, ich möchte ein Array durchsuchen. Jedoch möchte ich suchen, ob innerhalb eines Datensatzes ein Stringfetzen enthalten ist.
Beispiel:
PHP-Code:
1:
2:
<?php
$array
=array("abcde""fghi""jkkals");
jetzt möchte ich den Wert "1" zurückgeliefert bekommen, wenn ich nach "gh" suche. Ist das ohne eine Schleife möglich?
timo_hildebrand ist offline   Mit Zitat antworten
Gesponsorte Links
Alt 03.04.2007, 08:44:12   #2 (permalink)
Multitalent
Benutzerbild von joschilein

ID: 9301
Lose-Remote

joschilein eine Nachricht über ICQ schicken
Reg: 05.05.2006
Beiträge: 1.413
joschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehen
Standard

Willst du 1 haben, weil gh im zweiten, also 1 nummerierten Eintrag steht oder 1, weil es generell im Array vorkommt? Bei zweiterem wäre folgendes möglich, wenn du definitiv keine Schleife willst.

PHP-Code:
1:
$erg = (strpos(implode('_+_'$array), $suche) !== FALSE) ? TRUE FALSE
Aber selbst wenn man das in nicht nur eine Zeile schreibt ist es unschön. Warum also keine Schleife nehmen?



Heute schon gepixelt
joschilein ist offline   Mit Zitat antworten
Alt 03.04.2007, 11:03:42   #3 (permalink)
Eta Capricorni
Benutzerbild von scriper

ID: 57943
Lose-Remote

scriper eine Nachricht über ICQ schicken
Reg: 03.05.2006
Beiträge: 2.714
scriper genießt hohes Ansehenscriper genießt hohes Ansehenscriper genießt hohes Ansehenscriper genießt hohes Ansehenscriper genießt hohes Ansehenscriper genießt hohes Ansehenscriper genießt hohes Ansehenscriper genießt hohes Ansehenscriper genießt hohes Ansehenscriper genießt hohes Ansehenscriper genießt hohes Ansehen
Standard

mhm, also ich würde wirklich lieber ne foreach-Schleife nehmen und da drin dann mit net Stringfunktion suchen...wieso sollte man es sich aber einfach machen, wenn es auch schwer geht?


scriper ist offline   Mit Zitat antworten
Alt 03.04.2007, 11:07:11   #4 (permalink)
der Programmierer
Benutzerbild von theHacker

ID: 69505
Lose-Remote

theHacker eine Nachricht über ICQ schicken theHacker eine Nachricht über AIM schicken theHacker eine Nachricht über MSN schicken theHacker eine Nachricht über Yahoo! schicken theHacker eine Nachricht über Skype™ schicken
Reg: 20.04.2006
Beiträge: 20.043
theHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes Ansehen
Standard

Zitat:
Zitat von timo_hildebrand Beitrag anzeigen
Ist das ohne eine Schleife möglich?
Betrachte es doch mal logisch: Nein, niemals !

Wie willst du mit O(1) (konstantem Aufwand) ein beliebig langes Array durchsuchen ? Erschwerend kommt hinzu, dass du nach einem Mittelstück im String suchen willst.

Die simpleste Lösung, die mir einfallen würde, wär
PHP-Code:
1:
2:
3:
4:
5:
$array=array(...);
$search_part="foo";
foreach(
$array as $key=>$string)
  if(
strpos($string,$search_part)!==false)
    echo 
"match found: \$array['$key']=$string\n"
.
theHacker ist offline   Mit Zitat antworten
Alt 03.04.2007, 15:55:30   #5 (permalink)
Multitalent
Benutzerbild von joschilein

ID: 9301
Lose-Remote

joschilein eine Nachricht über ICQ schicken
Reg: 05.05.2006
Beiträge: 1.413
joschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehen
Standard

@tH: Doch, es geht. Hab zwar mein Scriptstück nicht getestet, aber das sollte funktionieren. Aber das ist eher die Lösung für Programmierer "mit Skill", wie jetzt sicher jemand behaupten würde, dessen Nick mit "ch" beginnt.. Wer Schleifen benutzt ist schließlich ein Noob und verschwendet sinnlos Speicher für die Schleifenvariable

Natürlich ist die Schleifen-Variante zu bevorzugen, aber nicht gehen stimmt auch nicht.



Heute schon gepixelt
joschilein ist offline   Mit Zitat antworten
Alt 03.04.2007, 16:42:31   #6 (permalink)
wasn das?
Benutzerbild von ZeroCCC

ID: 46810
Lose-Remote

ZeroCCC eine Nachricht über ICQ schicken
Reg: 10.05.2006
Beiträge: 1.734
ZeroCCC kann auf vieles stolz seinZeroCCC kann auf vieles stolz seinZeroCCC kann auf vieles stolz seinZeroCCC kann auf vieles stolz seinZeroCCC kann auf vieles stolz seinZeroCCC kann auf vieles stolz seinZeroCCC kann auf vieles stolz seinZeroCCC kann auf vieles stolz seinZeroCCC kann auf vieles stolz sein
Standard

Zitat:
Zitat von joschilein Beitrag anzeigen
@tH: Doch, es geht. Hab zwar mein Scriptstück nicht getestet, aber das sollte funktionieren. Aber das ist eher die Lösung für Programmierer "mit Skill", wie jetzt sicher jemand behaupten würde, dessen Nick mit "ch" beginnt.. Wer Schleifen benutzt ist schließlich ein Noob und verschwendet sinnlos Speicher für die Schleifenvariable

Natürlich ist die Schleifen-Variante zu bevorzugen, aber nicht gehen stimmt auch nicht.
ja absoluter noob... als vollprofi macht man das natürlich so
PHP-Code:
1:
2:
3:
4:
5:
ob_start();
var_dump(array);
$temp ob_get_content();
ob_end_clean();
preg_match("~\[(.*)\].*suchstring~",$temp,$index); 
ZeroCCC ist offline   Mit Zitat antworten
Alt 03.04.2007, 16:52:48   #7 (permalink)
be forever curious
Benutzerbild von tleilax

ID: 27936
Lose-Remote

Reg: 20.04.2006
Beiträge: 2.228
tleilax genießt hohes Ansehentleilax genießt hohes Ansehentleilax genießt hohes Ansehentleilax genießt hohes Ansehentleilax genießt hohes Ansehentleilax genießt hohes Ansehentleilax genießt hohes Ansehentleilax genießt hohes Ansehentleilax genießt hohes Ansehentleilax genießt hohes Ansehentleilax genießt hohes Ansehen
Standard

Zitat:
Zitat von joschilein Beitrag anzeigen
PHP-Code:
1:
$erg = (strpos(implode('_+_'$array), $suche) !== FALSE) ? TRUE FALSE
Iuh, was ist das denn? Wozu da den trinären Operator? Um true auf true bzw. false auf false zu mappen?

Ich würde da auch eher auf eine Lösung zurückgreifen, die ohne Schleifen auskommt:
PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
<?php
    
function array_find($haystack$needle)
    {
        
$iterator create_function('$item''return strpos($item, \''.$needle.'\')!==false;');
        return 
array_filter($haystack$iterator);
    }

    function 
array_contains($haystack$needle)
    {
        
$iterator create_function('$value, $item''return $value or strpos($item, \''.$needle.'\')!==false;');
        return 
array_reduce($haystack$iteratorfalse);
    }

    
$needle 'foo';
    
$array = Array('affe''barfoos''cherry''dilemma''eisberg''fastfood');
    
printf('Das Array enthält irgendwo den String "%s": [%s]<br/>'$needlearray_contains($array$needle) ? 'X' '-');
    
printf('Die folgenden Elemente enthalten den String "%s": [%s]<br/>'$needleimplode(','array_find($array$needle)));
?>
Nicht wirklich intuitiv, dafür schön schlank.

.lange tage und angenehme nächte, tlx
:.whatthemovie.com (Screenshots raten) | PHP ExportForce-Klasse
tleilax ist offline   Mit Zitat antworten
Antwort

Gesponsorte Links

Anzeige



Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mehrdimensionales Array zum einfachen Array imploden Papenburger Programmierung 5 30.04.2007 16:47:41
[C/C++] Array von Pointern auf ein Array Anarkist Programmierung 2 09.12.2006 16:30:02
[php] array aus array löschen Goltergaul Programmierung 4 30.10.2006 15:44:00
[PHP] ordner in array / array sortieren *erledigt* Anachronist Programmierung 7 22.10.2006 19:52:05
[PHP] Multidimensionales Array sortieren und durchsuchen evident Programmierung 3 18.06.2006 15:16:30


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:15:50 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Content Relevant URLs by vBSEO