[php] Array replace

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wou een array met replace maken. Ik ben zo ver gekomen als hieronder staat, maar hij wil geen output leveren :'(

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?


$aantal = 05;

$maand_find = array("01", "02", "03", "04", "05", "06", "07", "08", "09",  "10", "11", "12");
$maand_array    = array("jan", "feb", "maa", "apr", "mei", "jun", "jul", "aug", "sep",  "okt", "nov", "dec"); 

$input = str_replace($maand_find["$aantal"], $maand_array["$aantal"], $input);

echo $input;

?>


Waar ga ik de fout in?

Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
"Hier is mijn script: Debug maar!"

Wat heb je zelf al geprobeerd?

[ Voor 14% gewijzigd door supakeen op 01-07-2003 11:34 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb de array's gecontroleerd, klopt naar mijn weten.

Denk dat het replacen fout gaat bij $maand_array["$aantal"], maar kan daar verder niets over vinden hoe ik dat anders kan doen.

Acties:
  • 0 Henk 'm!

Verwijderd

ten eerste is $aantal geen string dus kun je de quotes weglaten.

ten tweede is dit wel heel omslachtig met die str_replace aan de array zelf hangt al een index dus waarom gebruik je die niet ??

Acties:
  • 0 Henk 'm!

  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 12-09 14:21

koli-man

Bartender!!!!

Als je goed kijkt hier http://nl2.php.net/str_replace vind je denk ik je antwoord voor jouw probleem. En dan bij deze reactie op 13-Jun-2003 10:59

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


Acties:
  • 0 Henk 'm!

  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 15:41

mOrPhie

❤️❤️❤️❤️🤍

$maand_array[$aantal] gebruiken in plaats van de aanhalingstekens erbij...

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 16:28

Bosmonster

*zucht*

$aantal = 05;

05? Een integer kun je gewoon als 5 declareren.

Je wilt echter dus zoeken op de string "05", declareer het dan ook als string, of verander je array.

"$aantal"

variabelen dus niet tussen quotes, dat slaat werkelijk als een tang op een varken ;)

[ Voor 24% gewijzigd door Bosmonster op 01-07-2003 11:50 ]


Acties:
  • 0 Henk 'm!

  • Carnifex
  • Registratie: Januari 2000
  • Laatst online: 15:57

Carnifex

auch

Example 1. str_replace() example

$bodytag = str_replace("%body%", "black", "<body text=%body%>");
Ik neem dus aan dat $input iets is als "05" zodat dat vervangen wordt door "mei". Misschien dat PHP in de war raakt door die " in de array. Probeer eens een ' of niks te gebruiken...

Ik vind je oplossign ook niet erg handig. Je kunt toch veel makkelijker een array nemen en de nummering daarvan nemen als maandnummer (wel 1 bij optellen omdat ie bij 0 begint) ?

Acties:
  • 0 Henk 'm!

Verwijderd

Ow en string replace werkt ook niet zo.. leg eerst is uit wat je nu precies met dit script wil want dat is me ook niet echt duidelijk..

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 01 July 2003 @ 11:51:
Ow en string replace werkt ook niet zo.. leg eerst is uit wat je nu precies met dit script wil want dat is me ook niet echt duidelijk..
Ok, nou kijk. Dit komt in een while loop te staan. Ik krijg als output van de datum de maand nr's. Van 01 t/m 12. Die wil ik veranderen naar de bijbehoorden maand afkorting.

Acties:
  • 0 Henk 'm!

  • Carnifex
  • Registratie: Januari 2000
  • Laatst online: 15:57

Carnifex

auch

Als je een nummer om wil zetten in een maand, dan kun je beter
PHP:
1
echo $maand_array[$input-1];
gebruiken.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

ZOals het script er nu staat vervangt ie alle "06" met "mei". Niks meer en niks minder. Echt net is het allemaal niet gemaakt (je array index gaat van int naar string en dan waarschijnlijk weer terug naar int) en je aantal is gedefinieerd in het octale stelsel, maar omdat je slechts 1 digit gebruikt die kleiner is dan 8 merk je hier niks van.

Zoals reakie al zegt, geef eens duidelijk aan wat je wilt en duidelijk waarom het niet lukt en waarom datgene dat je krijgt niet datgene is dat je wilt hebben.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Carnifex schreef op 01 July 2003 @ 11:55:
Als je een nummer om wil zetten in een maand, dan kun je beter
PHP:
1
echo $maand_array[$input-1];
gebruiken.
THx, das idd een makkelijke oplossing! Thx!

Acties:
  • 0 Henk 'm!

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 16:22

pietje63

RTFM

kijk eens naar het foreach commando van php -> gebruik dan
PHP:
1
2
3
foreach ($maan_find[] as $i){
$maand_find[$i] = $maan_array[$i];
}

ofzo

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Je kan strings als '01','02'.. etc casten naar integers. Als je alleen die waarden als input hebt, kan je simpelweg dit doen:
PHP:
1
2
3
4
5
6
7
8
// intval test

$input="05";

$maand_array = array("jan", "feb", "maa", "apr", "mei",
 "jun", "jul", "aug", "sep",  "okt", "nov", "dec");

echo $maand_array[(intval($input)-1)];
Dingen als dubbele arrays en foreach zijn hier volstrekt overbodig, lijkt mij. :)

.edit: -1 toegevoegd als 01 januari moet voorstellen

[ Voor 48% gewijzigd door RedRose op 01-07-2003 16:11 ]

Sundown Circus

Pagina: 1