2016-08-08 28 views
-1

Ich bilde Schalterfunktion in PHP und ich frage mich, ob es möglich ist, einen der Fälle zu machen wie folgt aus:Preg_match in Switch-Fall in PHP?

switch($message){ 
     case 'hi': 
      $output = $jsonWelcome; 
      break; 
     case preg_match('/start/', $message): 
      $output = $jsonHelp; 
      break; 
} 

Ich möchte, dass letzte Fall auszuführen, wenn $ message wäre zum Beispiel: „Projektstart "oder" Projekt starten ". Ich denke, das liegt daran, dass preg_match 0 oder 1 zurückgibt. Gibt es eine Möglichkeit, diesen Code zu aktivieren?

+0

Nicht so weit ich weiß. Du könntest immer eine if-Anweisung verwenden –

+0

benutze 'if/elseif/else' anstelle von' switch' –

Antwort

-1
switch($message){ 
     case 'hi': 
      $output = $jsonWelcome; 
      break; 
     case (preg_match('/start/', $message) ? true : false): 
      $output = $jsonHelp; 
      break; 
} 

sollte gut funktionieren bewerten sollte.

Beispiel Arbeitscode: http://sandbox.onlinephpfunctions.com/code/99ab518718ce9488277619a33dbfdf353f0c2316

+0

Sie fügen eine condition-Anweisung in eine case-Anweisung ein. Dies macht die Dinge nur komplizierter und ausführlicher. – akDeveloper

+0

@akDeveloper stimme ich ein wenig zu. Aber wenn man es in der Spezifikation der Frage betrachtet, glaube ich, dass es absolut gültig ist. Ich denke, ein if/else-Baum wäre angemessener, aber es gibt offensichtlich einen Grund, warum das OP dies ignoriert hat. – iyop45

+0

Wenn Sie denken, dass eine if/else-Anweisung angemessener ist, sollte Ihre Antwort ein if/else enthalten. Persönlich bin ich in diesem Fall mehr mit 'switch (true)', das so tut als ob/sonst, aber mit besserer Struktur. – akDeveloper

-1

können Sie diese Schnipsel verwenden:

switch(true){ 
     case $message == 'hi': 
      $output = $jsonWelcome; 
      break; 
     case 1 == preg_match('/start/', $message): 
      $output = $jsonHelp; 
      break; 
} 

Wo alle Bedingungen true

+0

Was ist der Sinn, in diesem Fall wirklich eine switch-Anweisung zu verwenden? – iyop45

+0

'Switch'-Anweisungen sind erweiterbarer als' if'-Anweisungen und erzeugen mehr eindeutigen Code. So können in Zukunft weitere Bedingungen hinzugefügt werden, ohne den Code neu strukturieren zu müssen. – Whiteulver

+0

Wenn Sie '' 'switch (true)' '' verwenden, machen Sie diesen Punkt etwas überflüssig. Es ist nicht Standard-Nutzung und so in diesem Fall denke ich, macht es weniger klar. Für Ihren Code benötigen Sie '' '$ message =" abc "' '' für jeden einzelnen Zweig, der die Anweisung '' 'switch''' sinnlos macht. – iyop45

0

verwenden, wenn Sie Ihren Code besser lesbar und Compiler freundlich speichern möchten:

switch($message){ 
     case 'hi': 
      $output = $jsonWelcome; 
      break; 
     default: 
      $output = preg_match('/start/', $message) ? $jsonHelp : ""; 
}