[PHP] Twee arrays combineren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Rexomnium
  • Registratie: September 2000
  • Laatst online: 17-09 16:07

Rexomnium

Vincam aut moriar

Topicstarter
Bij een zelfgebouwde thumbnail gallery kan de admin commentaar bij elk plaatje in een gallery plaatsen. Voor het commentaar maak ik gebruik van een textarea, met als name picturecomment[].
Daarnaast heb ik een hidden inputveld gemaakt waarmee pictureid[] wordt verstuurd. Het aantal plaatjes - en daarmee het aantal commentaren - is dus variabel.

Zo krijg ik in de volgende pagina keurig netjes twee arrays met daarin respectievelijk de commentaren en de pictureid's. De pictureid's worden altijd meegestuurd, maar de admin hoeft niet alle commentaarvelden in te vullen. Ik wil het zo bouwen dat de arrays worden gecombineerd als er een waarde in picturecomment staat. Tevens moeten ze ook op de juiste manier worden gecombineerd. Als ik in het 3e, 7e en 20e plaatje van commentaar voorzie, wil ik dat ze dus het nummer van die plaatjes meekrijgen.

Ik heb al gebruik gemaakt van array_merge() en, inderdaad, op deze manier worden ze met elkaar gecombineerd, maar hoe kan ik nou een de twee arrays vergelijken met elkaar?

PHP:
1
2
3
4
5
6
$testing = $_POST['picturecomment'];
$testing2 = $_POST['pictureid'];
$testing3 = array_merge($testing2, $testing);

foreach ($testing3 as $value) {
echo $value."<br>"; }


Met bovenstaande code krijg ik keurig netjes een lijstje met id's en daarna met comments. Deze worden dus niet naast elkaar geplaatst. Maar hier heb ik dus weinig aan. Hoe bouw ik nou wat ik wil? :)

[ Voor 11% gewijzigd door Rexomnium op 27-12-2004 13:04 ]

We zijn allemaal vaandeldrager in een optocht van gekwetsten.


Acties:
  • 0 Henk 'm!

  • Joen
  • Registratie: Juli 2003
  • Laatst online: 09-08 18:34
Ik zou het zo geprobeerd hebben:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
//array van formulier ophalen
$testing = $_POST["picturecomment"]; 
$testing2 = $_POST["pictureid"];

//nieuwe array $testing3 opbouwen
for($i=0;$i<count($testing2);$i++){
    $testing3[$testing2[$i]]=$testing[$i];
}

//structuur van nieuwe array weergeven in browser
echo "<pre>";
print_r($testing3);
echo "</pre>";
?>

[ Voor 39% gewijzigd door Joen op 27-12-2004 13:12 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Waarom geef je niet de textarea's handiger namen? Als je zoiets doet, hoef je helemaal niet te klooien met allerlei losse array's:
HTML:
1
2
3
4
5
6
7
8
9
Plaatje 1:
Public: <input type='checkbox' name='picture_info[1][public]' value='1'>
<textarea name='picture_info[1][comment]'></textarea>

...

Plaatje 45
Public: <input type='checkbox' name='picture_info[45][public]' value='1'>
<textarea name='picture_info[45][comment]'></textarea>

Doe maar eens print_r($_POST['picture_info']) in php nadat je zo'n form submit.

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Als getal geef je dan uiteraard het id van je plaatje, zodat je ook daar niet meer naar hoeft te zoeken.

Acties:
  • 0 Henk 'm!

Verwijderd

PHP5:
PHP:
1
2
3
4
testing= array_combine($_POST['pictureid'], $_POST['picturecomment'])
echo '<pre>'
print_r($testing)
echo '</pre>'

edit: ACM's oplossing is (natuurlijk :P) handiger,maar Jeroen's code hoeft niet meer in PHP5

[ Voor 39% gewijzigd door Verwijderd op 27-12-2004 13:48 ]


Acties:
  • 0 Henk 'm!

  • Joen
  • Registratie: Juli 2003
  • Laatst online: 09-08 18:34
Ik ben nog niet zo op de hoogte van alle niuwePHP5 functies en mijn testbak draait nog op PHP4. :P
Ik heb het nog nooit geprobeerd, maar theoretisch vind ik ACM's oplossing er erg goed uit zien ja.
Pagina: 1