Ik heb een array waarin in de datum wil herschrijven van 01-05-2010 naar 2010-05-01.
Dat herschrijven lukt, maar ik wil het item in de orginele array overschrijven.
Dat lukt niet. De datum heet $item['pubdate'].



foreach ($items as $item) : 
   /*definieren vars om nieuwe datum te schrijven zijn weggelaten hier */

   $item['pubdate'] = "$jaar-$newmaand-$newdag"; // hier zit het probleem,



Ik zou denken: dit overschrijft in de array de oude waarde. Maar dat is niet zo.

Google op update array item etc levert me niet genoeg op.
Wie helpt?
$items is een array met arrays, en die arrays die daarin zitten wil je aanpassen neem ik aan? De foreach-lus maakt een kopie van zo'n item (niet helemaal waar, maar het werkt wel volgens dat idee) dus als je $item aanpast, pas je de kopie aan.

Simpele oplossing is terug verwijzen naar de oorspronkelijke array, $items, en dan de index gebruiken om bij dat ene item te komen.
<?php

<?php

$items = array(
array(
'title' => 'taart',
'pubdate' => '10-10-2010'
),
array(
'title' => 'schoen',
'pubdate' => '07-05-2011'
)
);

foreach($items as $index => $item) {
$items[$index]['pubdate'] = strrev($item['pubdate']);
}

var_dump($items);

?>
Dank Jelmer Ik ga er mee aan het werk. Die index had ik niet gebruikt. Dat is de oplossing. Werkt al!

En strrev, gaat wel mis toch?
als je 01-05-2010 strrev doet, dan wordt het toch 0102-50-10 ?
(volgens de manual is het :

<?php
echo strrev("Hello world!"); // outputs "!dlrow olleH"
?>
Wat je kan doen, afgezien van gewoon met substr stukjes aan elkaar plakken is:
<?php
$date = implode('-', array_reverse( explode('-', $date) ) );
?>
ja, die had ik er alleen maar even in staan om te laten zien dat $items op deze manier wel verandert. :)
Jelmer je zei:
(niet helemaal waar, maar het werkt wel volgens dat idee)

Hoe werkt het dan wel precies?
Of bedoel je gewoon dat objecten als referentie worden gegeven en de rest als klonen?
Die implode is idd handig! veel makkelijker dan losse substr, maar ik heb ze toch nog nodig verderop tijdens de output! Thanks!
Pim de Haan op 11/06/2010 10:36:49

Hoe werkt het dan wel precies?

PHP maakt volgens mij in eerste instantie gewoon een reference naar het item uit de array maar zodra je hem aanpast wordt er een kopie gemaakt met daarin de aanpassing. Zie dit artikel.

Reageren