Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP] 2 arrays -> checkbox lijst

Pagina: 1
Acties:

  • GAITii
  • Registratie: December 2008
  • Laatst online: 22-11 23:03
Beste Tweakers,

Snel vraagje, ik heb 2 arrays met gebruikers:

Array 1 (complete userlist):
Array ( [0] => user1 [1] => user2 [2] => user3 [3] => user4 )

Array 2 (userlist lid van een groep):
Array ( [0] => user2 [1] => user4 )

Wat ik nu wil is een lijst met de complete userlist. Met daarvoor checkboxjes, en welke daarvan in een de groep zitten dat die checked zijn. Hoe kan ik dit in vredesnaam voor elkaar krijgen? Heb al wel wat geprobeerd met foreaches maar dat ging totaal niet.

Voorbeeld:

[ ] user1
[x] user2
[ ] user 3
[x] user4

Hopelijk kan iemand mij hiermee helpen.

[ Voor 10% gewijzigd door GAITii op 03-01-2014 10:44 ]

Steam: GAITii | PSN: GAITii | 3DS FC: 0361-7487-5231


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22-11 22:46

Creepy

Tactical Espionage Splatterer

Wat heb je dan geprobeerd met die foreaches? En ga je me nu echt vertellen dat je in_array() niet hebt gevonden?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Dorgaldir
  • Registratie: September 2009
  • Laatst online: 10-04 22:52

Dorgaldir

Creature of the web

Je loopt door de ene array met alle users dmv bvb een foreach
en bij elke stap kijk je of die waarde in de 2e array voorkomt
Zo ja, check die checkbox.

Just me


  • GAITii
  • Registratie: December 2008
  • Laatst online: 22-11 23:03
Dorgaldir schreef op vrijdag 03 januari 2014 @ 10:47:
Je loopt door de ene array met alle users dmv bvb een foreach
en bij elke stap kijk je of die waarde in de 2e array voorkomt
Zo ja, check die checkbox.
En dat kan door middel van de in_array functie?

Steam: GAITii | PSN: GAITii | 3DS FC: 0361-7487-5231


  • Dorgaldir
  • Registratie: September 2009
  • Laatst online: 10-04 22:52

Dorgaldir

Creature of the web

dat is exact waar die functie voor dient ;)

http://be2.php.net/in_array

Just me


  • royduin
  • Registratie: November 2007
  • Laatst online: 12:21
PHP:
1
2
3
4
5
6
7
8
9
<?php
foreach($users as $user){
    if(in_array($user, $usersingroup)){
        echo 'X '.$user;
    } else {
        echo $user;
    }
}
?>

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Het zal wel niet aan de orde zijn (of komen) bij users en groepen (doorgaans is 't aantal groepen te overzien), maar bedenk wel dat dit een O(n) operatie is; je gaat voor elke user telkens op zoek in een array of de user er in voor komt door de hele array te doorlopen (m.b.v. in_array). Het is het overwegen waard een hashset o.i.d. (wat PHP arrays toch al zijn) te gebruiken:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$users = array(
  array('id'=>1, 'name'=>'Foo', 'email'=>'foo@foo.com', 'groups'=>array(1001, 1002)),
  array('id'=>2, 'name'=>'Bar', 'email'=>'bar@bar.com', 'groups'=>array(1002)),
  // etc. etc.
);

$groups = array(
  1001=>'Admins',
  1002=>'Users',
  // etc. etc.
);

foreach ($users as $user) {
  echo 'User: ' . $user['name'] . ' (' . $user['email'] . ') is member of: ';
  foreach ($user['groups'] as $groupid) {
    echo '[' . $groups[$groupid] . '] ';
  }
  echo '\n';
}

User: Foo (foo@foo.com) is member of: [Admins] [Users] 
User: Bar (bar@bar.com) is member of: [Users]

Waar mogelijk gebruik je dus liever iets als array_key_exists of isset o.i.d. Bij kleine aantallen is het verschil verwaarloosbaar en de moeite niet waard (en kun je deze post gerust negeren); heb je het over grotere collecties (en zijn users/groepen dus een fictief voorbeeld voor je eigenlijke probleem) dan is het wel iets om even bij stil te staan.

[ Voor 5% gewijzigd door RobIII op 03-01-2014 11:32 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • royduin
  • Registratie: November 2007
  • Laatst online: 12:21
PHP:
1
echo '\n';


Daar dienen dubbele quotes gebruikt te worden, maar verder een interessante post!

  • jessy100
  • Registratie: November 2010
  • Laatst online: 22-11 15:23
royduin schreef op vrijdag 03 januari 2014 @ 13:46:
PHP:
1
echo '\n';


Daar dienen dubbele quotes gebruikt te worden, maar verder een interessante post!
is de gedachte van "" is render en '' is laat het zo niet aardig achterhaald?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
jessy100 schreef op vrijdag 03 januari 2014 @ 13:52:
[...]


is de gedachte van "" is render en '' is laat het zo niet aardig achterhaald?
Nee, Royduin heeft gelijk; het heeft niets met "uitvoer snelheid" o.i.d. te maken (wat vaak aangehaald wordt) maar met welke escape-sequences binnen welke soort quotes herkend worden. Dat krijg je als je code uit de losse pols schrijft, my bad :X :Y)

[ Voor 11% gewijzigd door RobIII op 03-01-2014 14:46 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1