[PHP] Element voor aan array toevoegen met behoud key index

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
Ik heb de volgende array ($categories). Deze array gebruik ik om een HTML option list te maken waarlangs een gebruiker kan kiezen welke berichten hij wil zien:
code:
1
2
3
4
5
6
7
8
Array
(
    [1] => Persberichten
    [2] => Codevoorbeelden
    [5] => Recepten
    [6] => Bugreports
    [9] => Evenementen
)

De relatie hierin in categorie_id => categorie_naam. Nu wil ik vooraan een categorie toevoegen met index 0: de categorie "Alle berichten". De array moet dus worden:
code:
1
2
3
4
5
6
7
8
9
Array
(
    [0] => Alle berichten
    [1] => Persberichten
    [2] => Codevoorbeelden
    [5] => Recepten
    [6] => Bugreports
    [9] => Evenementen
)

Als ik array_merge gebruik, wordt de nieuwe array voorzien van nieuwe index keys:
PHP:
1
$categories = array_merge(array(0 => 'All categories'), $categories)

print_r($categories) levert dan ook op:
code:
1
2
3
4
5
6
7
8
9
Array
(
    [0] => Alle berichten
    [1] => Persberichten
    [2] => Codevoorbeelden
    [3] => Recepten
    [4] => Bugreports
    [5] => Evenementen
)

Dat mag dus niet. Wie weet hoe ik een index kan toevoegen aan een array met behoud van de keys?

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


Acties:
  • 0 Henk 'm!

  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Waarom doe je niet gewoon $catagories[0] = "Alle berichten"? Het is me nu namelijk vrij onduidelijk wat je wil doen als je een bestaande key namelijk 'toevoegt', i.e. wordt deze overschreven dan ja/nee?

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

$samengevoegd = $array1 + $array2;

Zou moeten doen wat je wil?

php.net:
If you want to completely preserve the arrays and just want to append them to each other, use the + operator:

[ Voor 210% gewijzigd door Brakkie op 29-11-2005 15:06 ]

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • MeIsTwisted
  • Registratie: November 2001
  • Laatst online: 28-07-2023

MeIsTwisted

not a Twisted mind

bij een merge met een numerieke key worden alle keys hernummerd. zie php.net

Multimonitor is relax :P


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Nu online
In de comments van de PHP manual bij array_unshift vind ik het volgende:
array_merge() will also reindex (see array_merge() manual entry), but the '+' operator won't, so...
PHP:
1
$arrayone=array("newkey"=>"newvalue") + $arrayone;

does the job.
Zie ook brakkie's edit :)

[ Voor 14% gewijzigd door T-MOB op 29-11-2005 15:07 ]

Regeren is vooruitschuiven