Gå til innhold

Anbefalte innlegg

Hei. I koden nedenfor prøver jeg å skrive ut Dog og Cat med bruk av preg_match,

men hele array'n blir skrevet ut. Hva gjør jeg galt her ?

 

<?
$find = array("Dog","Horse","Cat","Bird");
for ($i=0; $i<count($find); $i++) {
if(preg_match("/(Dog|Cat)/i",$match)) {
print $match[$i]."&nbsp";
} else {
print $find[$i]."&nbsp";
}}
?>

Lenke til kommentar
Videoannonse
Annonse

Hmm, vanskelig å si hva du gjør feil siden du ikke gidder å forklare hva du prøver på. I hvilken situasjon skal du bruke dette scriptet i? For å skrive ut "Cat og Dog", skriver man jo bare echo "Cat og Dog"; , men så er sikkert ikke dette du prøver på heller.

 

Kort fortalt har du skrevet en kode som kjører en if-test på en preg_match som peker mot en variabel som ikke finnes. Med andre ord vil den feile hver gang og gå for din else, som printer ut elementene i arrayen.

Lenke til kommentar

jeg skjønner det, men se på preg_match koden, den bruker jo ikke $find noe sted, hvordan skal den vite at det er elementene i $find den skal matche mot?

 

det blir som å si:

 

$addresse = "[email protected]";

 

mail("hei her kommer det en email, hilsen meg");

 

... og forvente at mailkommandoen skal "vite" at du ønsker å sende til $addresse, selvom du ikke bruker $addresse i mailkommandoen.

Lenke til kommentar
<?
$find = array("Dog","Horse","Cat","Bird");
for ($i=0; $i<count($find); $i++) {
if(preg_match("/(Dog|Cat)/i", $find, $match)) {
print $match[$i]."&nbsp";
} else {
print $find[$i]."&nbsp";
}}
?>

Fikset den feilen som er kommentert av andre.

 

preg_match("/Dog|Cat/i", $match) - Denne vil søke gjennom variabelen match, som ikke er definert.

 

preg_match("/Dog|Cat/i", $find, $match) - Denne vil søke gjennom $find og lagre i $match.

 

Men etter å ha lest gjennom koden din selv så har du noen andre feil.

For det første så skriver du ut $match[$i]. Siden du gjør dette søket for hver gang må du skrive ut $match[0] for å få ønsket resultat.

 

En korrigert kode som jeg tror har det resultatet du ønsker å oppnå:

 

 

<?
$find = array("Dog","Horse","Cat","Bird");
for ($i=0; $i<count($find); $i++) {
if(preg_match("/(Dog|Cat)/i", $find[$i], $match)) {
print $match[0]."&nbsp";
} else {
print $find[$i]."&nbsp";
}}
?>

 

Men du kan med fordel forandre dette ved å legge preg_match utenfor loopen. Egentlig kan du forandre alt for å gjøre det kjappere enklere og smartere.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...