[PHP] stuk array vervangen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Sequence
  • Registratie: Maart 2000
  • Laatst online: 27-05-2024

Sequence

Online marketing

Topicstarter
Ben bezig om zelf een filmdatabase te maken, en heb de database gevuld met wat films en daarbij genoteerd of ik hem al dan niet heb.

Ik heb nu een array $line met arrays..

print_r($line); geeft als output:
Array ( [naam] => film1 [have] => N ) Array ( [naam] => film2 [have] => N ) Array ( [naam] => film3 [have] => Y ) Array ( [naam] => film4 [have] => Y ) Array ( [naam] => film5 [have] => N )

print($line[have]); geeft als output:
NNYYN

Wat ik nou wil is het volgende, ik wil dat attribuut van 'have' vervangen door iets anders (plaatje eigenlijk, maar nu in eerste instantie N door nee en Y door ja :))

hoe krijg ik het voor elkaar om voor de hele array met arrays elke $line[have] 'Y' te vervangen door 'ja' en 'N' door 'nee' ?

Acties:
  • 0 Henk 'm!

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 08:24

Tux

str_replace() accepteert naar mijn weten ook array's. Als dat niet lukt is het natuurlijk nog altijd mogelijk om de array met een loopje te doorlopen.

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Acties:
  • 0 Henk 'm!

Anoniem: 27270

PHP:
1
2
for($i = 0; $i < count($line); $i++)
 $line[$i]['have'] = 'Y'
Zoiets? Beetje heel erg simpel, kan een beetje koffieslurper dit niet zelf oplossen?

Acties:
  • 0 Henk 'm!

  • Sequence
  • Registratie: Maart 2000
  • Laatst online: 27-05-2024

Sequence

Online marketing

Topicstarter
Anoniem: 27270 schreef op maandag 22 mei 2006 @ 22:33:
PHP:
1
2
for($i = 0; $i < count($line); $i++)
 $line[$i]['have'] = 'Y'
Zoiets? Beetje heel erg simpel, kan een beetje koffieslurper dit niet zelf oplossen?
mjah ben stiekem toch nog beetje beginnend php'er hiero :P

had zelf iets bedacht in de trend van
PHP:
1
2
3
4
5
      forearch ($line)
        {
        $line[have] = preg_replace(Y, jaja, $line[have]);
        $line[have] = preg_replace(N, neenee, $line[have]);
    }

maar dat werkte dus niet ;(

Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 17-06 20:59
Kun je dat niet beter doen bij het ophalen van die lijst? Stel dan je met SQL werkt vang je dat al af in de query. En dat gedoe hierboven, je moet even de Y en de N tussen quotes zetten. Strings enzo.

|>


Acties:
  • 0 Henk 'm!

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 08:24

Tux

En als je het ongeveer zo doet?:

PHP:
1
2
3
4
5
    if ($line['have'] == 'Y') {
        $line['have'] = 'jaja';
    } else {
        $line['have'] = 'neenee';
    }

doet?

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Acties:
  • 0 Henk 'm!

Anoniem: 27271

Ik zou dit met een foreach en references doen.

PHP:
1
2
3
4
5
foreach ($line as &$entry) {
    if ($entry['have'] == "Y"
        $entry['have'] = "JA";
    ....
}


http://nl3.php.net/manual/en/control-structures.foreach.php

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-06 00:38

NMe

Quia Ego Sic Dico.

Op een gegeven moment komt dit spul uit een database (of filesystem, of wat dan ook). Op dat moment kun je toch ook prima gewoon kijken wat de waarde van have is voordat je het in het array zet?
PHP:
1
2
3
4
5
6
7
8
while ($row = mysql_fetch_assoc($recordset)) {
  if ($row["have"] == "Y")
    $have = "Ja";
  else
    $have = "Nee";

  $array[] = array("naam" => $row["naam"], "have" => $have);
}

Wat niet in het array komt hoef je ook niet te vervangen. En al helemaal niet met regexps. 8)7 Neem dan op zijn minst array_walk. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Sequence
  • Registratie: Maart 2000
  • Laatst online: 27-05-2024

Sequence

Online marketing

Topicstarter
De oplossing van Tux was voor mij de werkende! tnx voor de voorzetjes ;)

Acties:
  • 0 Henk 'm!

Anoniem: 25556

Ik zou het ergens anders aanpakken, nl. in je database, maar goed.

Nog een wat kortere (en imo beter leesbare) versie:
PHP:
1
  $line['have'] = $line['have'] == "Y"?"Ja":"Nee";

Dit doet exact hetzelfde als de code van Tux (nou ja, 'Ja' ipv 'jaja' etc).

[ Voor 35% gewijzigd door Anoniem: 25556 op 22-05-2006 23:55 ]

Pagina: 1