[PHP] Array-key veranderen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
Ik heb de volgende array $categories:
code:
1
2
3
4
5
6
Array (
    [1] => Blogpost
    [2] => Codevoorbeeld
    [8] => Klantenforum
    [11] => Comment
)

Ik wil voor elke key de string "create-" voor het cijfer zetten, zodat ik deze array krijg:
code:
1
2
3
4
5
6
Array (
    [create-1] => Blogpost
    [create-2] => Codevoorbeeld
    [create-8] => Klantenforum
    [create-11] => Comment
)

Ik dacht dit te kunnen bereiken met onderstaande stukje code:
PHP:
1
2
3
4
$create = $categories;
foreach ($create as $key => $value) {
  $create["create-$key"] = $value;
}

Maar hiermee breid ik de array alleen maar uit:
code:
1
2
3
4
5
6
7
8
9
10
Array (
    [1] => Blogpost
    [2] => Codevoorbeeld
    [8] => Klantenforum
    [11] => Comment
    [create-1] => Blogpost
    [create-2] => Codevoorbeeld
    [create-8] => Klantenforum
    [create-11] => Comment
)

Hoe is dit dan wel op te lossen? Ik heb in de search iets gevonden over reference, maar dat werkt niet. Ik gebruik overigens PHP 4:
PHP:
1
foreach ($create as &$key => $value) { // geeft een error

"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!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

PHP:
1
2
3
4
$create = array();
foreach ($categories as $key => $value) {
  $create["create-$key"] = $value;
}

Stelt niks voor lijkt me? :?

'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!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

PHP:
1
2
3
4
5
6
7
<?php
$create = $categories;
foreach ($create as $key => $value) {
  $create["create-".$key] = $value;
  unset($create[$key]);
}
?>

Acties:
  • 0 Henk 'm!

  • Mr. Bondt
  • Registratie: Februari 2005
  • Laatst online: 27-08 14:50
Waarom zou je dat willen? :?
Je kopieert anders gewoon je huidige array naar een nieuwe variabele, wist die oude, en met die vrijgekomen variabele ga je verder, zoals in die foreach die je al hebt gemaakt:

PHP:
1
2
3
4
5
6
7
$oude_array = $nieuwe_array;
unset($oude_array);
$oude_array = array();

foreach ($nieuwe_array as $key => $value) {
  $oude_array["create-$key"] = $value;
}

Ok, die unset() is miss niet nodig, maar staat wel zo netjes.

EDIT: hierboven: mja, dat kan ook 8)7

[ Voor 4% gewijzigd door Mr. Bondt op 31-07-2006 20:45 ]


Acties:
  • 0 Henk 'm!

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
-NMe- schreef op maandag 31 juli 2006 @ 20:40:
PHP:
1
2
3
4
$create = array();
foreach ($categories as $key => $value) {
  $create["create-$key"] = $value;
}

Stelt niks voor lijkt me? :?
Wat ontzettend stom van me. Ik zat hier al een uur op. Misschien moet ik maar eens even wat anders gaan doen. De buitenlucht in dus! Dank je wel voor het antwoord. Excuses dat ik hier een topic aan moest wijden :)

"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."