PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks. |
 |

22-04-2017, 09:40
|
nebbiolo
Registrierter Benutzer
|
|
Registriert seit: Aug 2008
Beiträge: 24
|
|
Einfachere Lösung
Hallo
Ich möchte in einem string mehrere (5) Variablen suchen. Da ich nun auch noch abfragen müsste ob in $m1 - $m5 überhaupt ein Wert vorhanden ist (sonst wäre ein Vergleich nicht notwendig) wird es kompliziert.
Gibt es eine einfachere Lösung als diese verschachtelten if's?
PHP-Code:
$m1 = substr ($inhalt, 0,3); $m2 = substr ($inhalt, 4,3); $m3 = substr ($inhalt, 8,3); $m4 = substr ($inhalt, 12,3); $m5 = substr ($inhalt, 16,3);
$merkmale = array("50", "51", "104", "108" etc.);
if (in_array(($m1),$merkmale)) { if (in_array(($m2),$merkmale)) { if (in_array(($m3),$merkmale)) { if (in_array(($m4),$merkmale)) { if (in_array(($m5),$merkmale)) { echo "Alle Merkamle gefunden"; } } } } }
nb. bitte nicht ab den "{}" aufregen, als ausgedienter Cobolprog ist das intus ...
Geändert von nebbiolo (22-04-2017 um 09:44 Uhr)
|

22-04-2017, 11:42
|
bandit600
Registrierter Benutzer
|
|
Registriert seit: Jan 2010
Beiträge: 192
|
|
Ungetestet:
PHP-Code:
<?php $ok = true; $merkmale = array("50", "51", "104", "108"); for ($i = 0; $i < count($merkmale); $i += 4) { if (! in_array(substr ($inhalt, $i,3))) { $ok = false; break; } } if ($ok) echo "Alle Merkamle gefunden"; else echo "Nicht alle Merkamle gefunden"; ?>
|

22-04-2017, 11:54
|
nebbiolo
Registrierter Benutzer
|
|
Registriert seit: Aug 2008
Beiträge: 24
|
|
vielen Dank Bandit!
Aber das schwirrt bei mir der Kopf ebenso ...
Ich möchte bei $my (statt Abfrage $m1 etc.) mehrere Werte eingeben, aber beim testen funktionert es nicht:
PHP-Code:
$mx = "50,"."104,"."108,"."0";
$merkmale = explode(",", $mx );
$my = "104,"."108";
if (in_array($my, $merkmale))
echo "Alle Merkamle gefunden<br/>";
ist das nicht möglich?
|

22-04-2017, 12:21
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 3.780
|
|
PHP-Code:
$needles = [104, 108]; $haystack = [50, 104, 108, 0];
$found = false; foreach ($needles as $needle) { if (in_array($needle, $haystack)) { $found = true; } }
var_dump($found); // bool(true)
|

22-04-2017, 12:43
|
nebbiolo
Registrierter Benutzer
|
|
Registriert seit: Aug 2008
Beiträge: 24
|
|
SUPER h3ll, genau das habe ich gesucht ... und es funktioniert nach meine Vorstellungen.
Vielen Dank und schönes Wochenende an alle, Nebbiolo
|

22-04-2017, 13:11
|
nebbiolo
Registrierter Benutzer
|
|
Registriert seit: Aug 2008
Beiträge: 24
|
|
zu früh gefreut ;-(
So muss nur ein Merkmal vorhanden sein im String (104 oder 108), ich benötige aber dass gem. Beispiel 104 UND 108 im $haystack vorhanden sind.
muss ich da noch mitzählen oder wie kann ich das lösen ?
|

22-04-2017, 13:27
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 3.780
|
|
PHP-Code:
$needles = [104, 108]; $haystack = [50, 104, 108, 0];
$found = true; foreach ($needles as $needle) { if (!in_array($needle, $haystack)) { $found = false; } }
var_dump($found); // bool(true)
|

22-04-2017, 15:58
|
nebbiolo
Registrierter Benutzer
|
|
Registriert seit: Aug 2008
Beiträge: 24
|
|
so einfach ;-)
Danke h3ll - so funktioniert es nun definitiv.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
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.
HTML-Code ist aus.
|
|
|
|
PHP News
-->
|