update item in een array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wouter Tinbergen

wouter Tinbergen

11/06/2010 09:43:25
Quote Anchor link
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'].


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
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?
 
PHP hulp

PHP hulp

24/11/2024 15:05:46
 
Jelmer -

Jelmer -

11/06/2010 09:56:02
Quote Anchor link
$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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php

[code]<?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);

?>
 
Wouter Tinbergen

wouter Tinbergen

11/06/2010 10:08:42
Quote Anchor link
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 :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo strrev("Hello world!"); // outputs "!dlrow olleH"
?>
 
Pim -

Pim -

11/06/2010 10:20:02
Quote Anchor link
Wat je kan doen, afgezien van gewoon met substr stukjes aan elkaar plakken is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$date
= implode('-', array_reverse( explode('-', $date) ) );
?>
 
Jelmer -

Jelmer -

11/06/2010 10:24:16
Quote Anchor link
ja, die had ik er alleen maar even in staan om te laten zien dat $items op deze manier wel verandert. :)
 
Pim -

Pim -

11/06/2010 10:36:49
Quote Anchor link
Jelmer je zei:
Quote:
(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?
 
Wouter Tinbergen

wouter Tinbergen

11/06/2010 10:37:39
Quote Anchor link
Die implode is idd handig! veel makkelijker dan losse substr, maar ik heb ze toch nog nodig verderop tijdens de output! Thanks!
 
Jelmer -

Jelmer -

11/06/2010 10:44:07
Quote Anchor link
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.
Gewijzigd op 11/06/2010 10:46:03 door Jelmer -
 
Wouter Tinbergen

wouter Tinbergen

11/06/2010 12:09:34
Quote Anchor link
Dank jullie wel!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.