abonnement Unibet Coolblue
pi_157635922
Yeahhhh Doctrine.
pi_157635949
Alleen wordt het soms wel een clusterfuck met al die annotations. Django's ORM vind ik een stuk mooier.
pi_157637818
quote:
1s.gif Op dinsdag 17 november 2015 21:19 schreef robin007bond het volgende:

[..]

En als je migreert naar een andere database hoef je maar één tekstregeltje veranderen. Dat is een groot voordeel.
En dan hopen dat je andere database hetzelfde SQL-dialect spreekt. Dat is, ook bij relationele databases, niet gegarandeerd.
pi_157639715
quote:
9s.gif Op dinsdag 17 november 2015 22:15 schreef robin007bond het volgende:
Alleen wordt het soms wel een clusterfuck met al die annotations. Django's ORM vind ik een stuk mooier.
Ik weet niet wat de Django ORM gebruikt, maar bij Doctrine kun je ook gebruik maken van yaml of xml of gewoon php voor je mapping. Niet dat het daar overzichtelijker van wordt, maar 't kan wel :)
  woensdag 18 november 2015 @ 11:07:12 #130
308438 Ser_Ciappelletto
Semi-professionele SJW
pi_157643572
Is het zo dat je in PHP vanuit een function geen beroep kan doen op een eerder geopende connectie? Hoe is dat het makkelijkste op te lossen zonder in iedere function terug die connectie te moeten openen?

Oh, en ik kan niet dezelfde functie tweemaal achtereen aanroepen met verschillende argumenten? Als ik ze allebei heb staan, werkt alleen de eerste. Als ik de eerste wegcomment, werkt de tweede perfect. --> oplossing was om de connectie correct te sluiten. :')

[ Bericht 25% gewijzigd door Ser_Ciappelletto op 18-11-2015 12:57:22 ]
pi_157647112
quote:
0s.gif Op woensdag 18 november 2015 11:07 schreef Ser_Ciappelletto het volgende:
Is het zo dat je in PHP vanuit een function geen beroep kan doen op een eerder geopende connectie? Hoe is dat het makkelijkste op te lossen zonder in iedere function terug die connectie te moeten openen?

Oh, en ik kan niet dezelfde functie tweemaal achtereen aanroepen met verschillende argumenten? Als ik ze allebei heb staan, werkt alleen de eerste. Als ik de eerste wegcomment, werkt de tweede perfect. --> oplossing was om de connectie correct te sluiten. :')
Voor dergelijke connections gebruik je in PHP vaak een Singleton, zie dit voorbeeldje.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  woensdag 18 november 2015 @ 14:13:21 #132
308438 Ser_Ciappelletto
Semi-professionele SJW
pi_157647396
quote:
0s.gif Op woensdag 18 november 2015 13:59 schreef Monolith het volgende:

[..]

Voor dergelijke connections gebruik je in PHP vaak een Singleton, zie dit voorbeeldje.
Zo te zien heb ik daar niets aan, want het zijn verbindingen met twee verschillende databases. Als !$dbConn == false, kan er nog een nieuwe verbinding aangemaakt moeten worden voor de andere database.
pi_157656294
quote:
0s.gif Op woensdag 18 november 2015 13:59 schreef Monolith het volgende:

[..]

Voor dergelijke connections gebruik je in PHP vaak een Singleton, zie dit voorbeeldje.
Nee, met een singleton kun je maar 1 instance hebben dus dan ga je nooit connecties naar 2 databases kunnen hebben. Die beperking is niet handig.

Je kunt gewoon meer dan 1 PDO connectie openen:
1
2
3
4
<?php
$db1 
= new PDO('mysql://dbname=db1;host=localhost''user1''pass1');
$db2 = new PDO('mysql://dbname=db2;host=my.external.db.server''user2''pass2');
?>
pi_157656495
quote:
0s.gif Op woensdag 18 november 2015 20:10 schreef Light het volgende:

[..]

Nee, met een singleton kun je maar 1 instance hebben dus dan ga je nooit connecties naar 2 databases kunnen hebben. Die beperking is niet handig.

Je kunt gewoon meer dan 1 PDO connectie openen:
[ code verwijderd ]

Dat hoeft niet hoor. Met een singleton kun je best meerdere connection objecten beheren als je dat zou willen. Die eis had ik overigens gemist in het oorspronkelijke verhaal.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_157656571
quote:
0s.gif Op woensdag 18 november 2015 11:07 schreef Ser_Ciappelletto het volgende:
Is het zo dat je in PHP vanuit een function geen beroep kan doen op een eerder geopende connectie? Hoe is dat het makkelijkste op te lossen zonder in iedere function terug die connectie te moeten openen?
Iedere class die db-toegang nodig heeft, moet als constructor-parameter hebben voor een database-verbinding (of een setter om dat in te stellen, maar dan heb je meer kans dat het vergeten wordt). Dat wordt een class property en daar kun je vanuit iedere method in die class bij. En in plaats van een PDO-object kun je ook een wrapper maken om PDO of op een andere manier een abstractielaag gebruiken. PDO extenden is een slecht idee.
quote:
Oh, en ik kan niet dezelfde functie tweemaal achtereen aanroepen met verschillende argumenten? Als ik ze allebei heb staan, werkt alleen de eerste. Als ik de eerste wegcomment, werkt de tweede perfect. --> oplossing was om de connectie correct te sluiten. :')
Een functie twee maal aanroepen met verschillende argumenten, hoort gewoon te werken, maar als het mis gaat door database-connecties kan het wel zijn dat het aantal openstaande connecties tegen het maximum van de database-server zit...
pi_157657950
quote:
1s.gif Op woensdag 18 november 2015 20:15 schreef Monolith het volgende:

[..]

Dat hoeft niet hoor. Met een singleton kun je best meerdere connection objecten beheren als je dat zou willen. Die eis had ik overigens gemist in het oorspronkelijke verhaal.
Misschien had ik het oorspronkelijke verhaal in eerste instantie ook niet goed gelezen.

Maar ik ben sowieso geen fan van singletons. Het voorbeeld in het artikel is geschikt voor 1 database-verbinding. Als je met 2 databases wilt kunnen verbinden, zul je waarschijnlijk veel code moeten copy-pasten (duplicate code, antipattern). (En wat nou als ik morgen een use-case heb met 10 databases? Alles maar 10x copy-pasten?)

Verder zijn de gegevens voor het maken van de verbinding hardcoded, da's ook niet handig (misschien alleen gedaan met het oog op het voorbeeld, maar toch). Die credentials moeten ergens vandaan komen, en je kunt ze slecht aanleveren. Maar als die DbConn zelf op zoek moet naar de credentials die ergens in een config file staan, gaat dat ten koste van herbruikbaarheid.

Verder wordt er bij de singleton gebruik gemaakt van static method calls en die zijn notoir slecht te mocken voor gebruik in tests. Als je een object van class Foo verwacht, kan ik je ook een object van Bar geven als Bar extends Foo. Dan moet ik alleen zorgen dat de methods die je aanroept wel iets teruggeven waar je mee verder kunt. Bij static method calls lukt dat niet, omdat overal in de code wordt verwezen naar de class Foo en mijn mock methods in Bar dus niet worden aangeroepen.

En ja, bij testen wil ik mocks kunnen gebruiken. Helemaal van iets als een database-connection. Als ik iets doe met het resultaat van een functie van een andere class, wil ik in mijn test niet weten hoe die andere class dat resultaat heeft bedacht maar alleen of mijn method goed kan omgaan met het gegeven resultaat.
pi_157661731
quote:
0s.gif Op woensdag 18 november 2015 20:55 schreef Light het volgende:

[..]

Misschien had ik het oorspronkelijke verhaal in eerste instantie ook niet goed gelezen.

Maar ik ben sowieso geen fan van singletons. Het voorbeeld in het artikel is geschikt voor 1 database-verbinding. Als je met 2 databases wilt kunnen verbinden, zul je waarschijnlijk veel code moeten copy-pasten (duplicate code, antipattern). (En wat nou als ik morgen een use-case heb met 10 databases? Alles maar 10x copy-pasten?)

Verder zijn de gegevens voor het maken van de verbinding hardcoded, da's ook niet handig (misschien alleen gedaan met het oog op het voorbeeld, maar toch). Die credentials moeten ergens vandaan komen, en je kunt ze slecht aanleveren. Maar als die DbConn zelf op zoek moet naar de credentials die ergens in een config file staan, gaat dat ten koste van herbruikbaarheid.

Verder wordt er bij de singleton gebruik gemaakt van static method calls en die zijn notoir slecht te mocken voor gebruik in tests. Als je een object van class Foo verwacht, kan ik je ook een object van Bar geven als Bar extends Foo. Dan moet ik alleen zorgen dat de methods die je aanroept wel iets teruggeven waar je mee verder kunt. Bij static method calls lukt dat niet, omdat overal in de code wordt verwezen naar de class Foo en mijn mock methods in Bar dus niet worden aangeroepen.

En ja, bij testen wil ik mocks kunnen gebruiken. Helemaal van iets als een database-connection. Als ik iets doe met het resultaat van een functie van een andere class, wil ik in mijn test niet weten hoe die andere class dat resultaat heeft bedacht maar alleen of mijn method goed kan omgaan met het gegeven resultaat.
Als ik een fatsoenlijke applicatie wil maken, dan gebruik ik geen PHP. Maar dat terzijde. :P

Een singleton is een pattern met als doel iets te maken waar je er slechts één van kunt hebben. In het geval van PHP is dat vaak een DB connectie.
Dat zegt natuurlijk verder niets over hoe je credentials injecteert. Doorgaans gebruik je daar gewoon vormen van property of dependency injection voor.

Ik heb al te lang niet veel met PHP gedaan om nog echt te weten welke mocking frameworks PHP heeft, maar doorgaans niet het mocken van static functies niet zo'n punt zijn. Bovendien, Singletons subsclasses is doorgaans niet de bedoeling. Ik zou ze ook gewoon final maken.

Ik kan overigens zo legio manieren bedenken om zonder duplicate code een wat uitgebreidere singleton instantie te maken die een verzameling aan connecties bijhoudt.
Bij voorkeur gebruik je gewoon een framework met een beetje fatsoenlijke ORM of OGM support natuurlijk.

[ Bericht 1% gewijzigd door Monolith op 19-11-2015 09:37:55 ]
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  donderdag 19 november 2015 @ 16:01:15 #138
308438 Ser_Ciappelletto
Semi-professionele SJW
pi_157671282
Oké, even een serieuze vraag:

voor mijn site moet ik telkens drie elementen op een pagina hebben: een titel, een grammatica-tabel en een bijschrift met uitleg enzo. Om praktische redenen (met name dat ik geen 20+ enorme html-tabellen wil typen) is het geen optie om voor ieder fenomeen een eigen html-pagina aan te maken. Daarom gebruik ik PHP om dingen uit te lezen.

Momenteel heb ik dat zo opgezet dat de titel en het bijschrift uit een .txt-bestandje in een map worden gelezen en de tabel als tabel uit een MySQL-database gehaald wordt. Maar eigenlijk vind ik dat best wel een stomme oplossing. Het liefst zou ik dat allemaal in een database zetten.

Het probleem is dat er in die tabel dus een andere tabel vervat moet zijn. Dan kan ik die aan de hand van het ID uitlezen en op de site plaatsen. Het houdt alles een stuk meer centraal en overzichtelijk. De My-SQL-tabel zou er dan zo uit moeten zien:

1
2
3
4
5
6
7
8
+-----+ ----------+----------+--------------+
| ID  | Titel     | Tabel    | Bijschrift   |
+-----+-----------+----------+--------------+
| 1   | Eerste    | Tabel1   | Bladiebla    |
| 2   | Tweede    | Tabel2   | Lalalala     |
| 3   | Derde     | Tabel3   | Nogmeer      |
| 4   | Vierde    | Tabel4   | Yapyapyp     |
+-----+-----------+----------+--------------+
En die Tabel# zou dan een grammatica-tabel moeten zijn (zoals in de pics die ik eerder postte).

Ik heb overwogen om in Tabel# gewoon de ganse HTML-tabel in te lezen maar dat lijkt me overdreven veel werk en bijzonder onelegant. Zijn hier betere methoden voor?
pi_157688693
Nooit van joins gehoord?
  vrijdag 20 november 2015 @ 10:58:19 #140
308438 Ser_Ciappelletto
Semi-professionele SJW
pi_157688710
quote:
14s.gif Op vrijdag 20 november 2015 10:56 schreef KomtTijd... het volgende:
Nooit van joins gehoord?
Nope. :P

Ik zal me daar eens in inlezen, bedankt. ;)
pi_157689651
quote:
14s.gif Op vrijdag 20 november 2015 10:56 schreef KomtTijd... het volgende:
Nooit van joins gehoord?
Je vraagt je af of mensen zich überhaupt wel eens de vraag hebben gesteld waarom die dingen RELATIONELE databases heten. :P
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  vrijdag 20 november 2015 @ 19:50:07 #142
308438 Ser_Ciappelletto
Semi-professionele SJW
pi_157700197
Heel leuk die joins, maar hoe zet ik nou de ene tabel in de andere? Beter gezegd: wat moet ik in mijn tabel 'compleet' onder 'tabel' zetten om de tabel 'lidwoorden' op te roepen?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
+----+------------+-------+------------------------+
| id | titel      | tabel | bijschrift             |
+----+------------+-------+------------------------+
|  1 | Lidwoorden |       | Dit zijn de lidwoorden |
+----+------------+-------+------------------------+

+-------------+-----------+------------+-----------+
| Naamval     | Mannelijk | Vrouwelijk | Onzijdig  |
+-------------+-----------+------------+-----------+
| Nominativus | ὁ         | ἡ          | τό        |
| Genitivus   | τοῦ       | τῆς        | τοῦ       |
| Dativus     | τῷ        | τῇ         | τῷ        |
| Accusativus | τόν       | τήν        | τό        |
| Nominativus | οἱ        | αἱ         | τά        |
| Genitivus   | τῶν       | τῶν        | τῶν       |
| Dativus     | τοῖς      | ταῖς       | τοῖς      |
| Accusativus | τούς      | τάς        | τά        |
+-------------+-----------+------------+-----------+

Ik kan trouwens 'lidwoorden' neerzetten en dat terug invoeren in een query om die tabel op te vragen, maar is daar geen makkelijkere oplossing voor?
pi_157701111
Doe eens een stap terug, wat wil je nu precies laten zien op de pagina?
pi_157701228
Wat me vooral niet helemaal duidelijk is, is de structuur van de tweede tabel. Ik begrijp dat je min of meer meerdere tabellen hebt met woorden in alle naamvallen, maar hoe sla je die precies op in je SQL database?
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_157709892
quote:
0s.gif Op woensdag 18 november 2015 23:16 schreef Monolith het volgende:

[..]

Als ik een fatsoenlijke applicatie wil maken, dan gebruik ik geen PHP. Maar dat terzijde. :P
PHP heeft voor- en nadelen. Maar laten we hier geen discussietopic over maken over of je wel of niet php moet gebruiken.
quote:
Een singleton is een pattern met als doel iets te maken waar je er slechts één van kunt hebben. In het geval van PHP is dat vaak een DB connectie.
Dat zegt natuurlijk verder niets over hoe je credentials injecteert. Doorgaans gebruik je daar gewoon vormen van property of dependency injection voor.
Vaak, dus niet altijd. Een goede ORM staat je toe om meer dan 1 db-connectie te maken. Daarnaast gaat credential injection niet handig werken als je een private constructor hebt (om een singleton te bouwen). Je weet immers niet wanneer de singleton wordt aangemaakt.
quote:
Ik heb al te lang niet veel met PHP gedaan om nog echt te weten welke mocking frameworks PHP heeft, maar doorgaans niet het mocken van static functies niet zo'n punt zijn. Bovendien, Singletons subsclasses is doorgaans niet de bedoeling. Ik zou ze ook gewoon final maken.
In php kun je classes niet final maken. Dat kan wel met methods. De de facto standaard voor Unit Tests in PHP is PhpUnit, uit de xUnit familie. En het mocken van static methods is niet het grootste probleem, het zorgen dat die methods worden aangeroepen wel.

Voorbeeld (pseudo-code, want ik vergeet vast dingen)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
class DbSingleton {
    private 
$connection;
    private static 
$instance;

    private 
__construct() {
        
$this->connection = new PDO(...)
    }

    public static function 
getConnection() {
        if (
self::$instance === null) {
            
self::$instance = new self();
        }
    }
}

class 
Foo {
    public function 
bar() {
        
$result DbSingleton::getConnection()->query(...)->fetchAll()
        return 
$result;
    }
}
?>
Als ik de functie bar in de class Foo wil testen, ben ik niet geïnteresseerd in wat er daadwerkelijk in de database staat. Sterker, ik wil helemaal niet dat de database benaderd wordt. Maar er wordt altijd gebruik gemaakt van de method getConnection in DbSingleton. Die class name staat daar hardcoded, dus je heb niets aan een mock.

(Veel PHP-native classes zijn ook niet te mocken, dus als je het goed wilt doen, bouw je een wrapper om die native classes. Dan heb je naar buiten toe duidelijke methods (zoals getUsers) en kun je ook eenvoudig zorgen dat je niet overal en nergens in je code de database rechtstreeks kunt benaderen.

quote:
Ik kan overigens zo legio manieren bedenken om zonder duplicate code een wat uitgebreidere singleton instantie te maken die een verzameling aan connecties bijhoudt.
Bij voorkeur gebruik je gewoon een framework met een beetje fatsoenlijke ORM of OGM support natuurlijk.
Yep. Doctrine comes to mind. Geen singletons, wel veel gebruikt, goed getest en actief in ontwikkeling.

Er is niets mis met het zelf bouwen van een framework / cms / database abstraction layer / etc. Dat zijn best leerzame projecten. Je moet je echter ook realiseren dat er meer bij komt kijken dan waar je in eerste instantie aan dacht en dat je code dus niet geschikt is voor productie.
  FOK!-Schrikkelbaas zaterdag 21 november 2015 @ 08:02:48 #146
862 Arcee
Look closer
pi_157710866
quote:
0s.gif Op vrijdag 20 november 2015 19:50 schreef Ser_Ciappelletto het volgende:
Heel leuk die joins, maar hoe zet ik nou de ene tabel in de andere? Beter gezegd: wat moet ik in mijn tabel 'compleet' onder 'tabel' zetten om de tabel 'lidwoorden' op te roepen?
[ code verwijderd ]

Ik kan trouwens 'lidwoorden' neerzetten en dat terug invoeren in een query om die tabel op te vragen, maar is daar geen makkelijkere oplossing voor?
Wat je moet doen is het id van de ene tabel opnemen als extern veld in de andere tabel. Dat ziet er dan zo uit:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
+----+------------+------------------------+
| id | titel      | bijschrift             |
+----+------------+------------------------+
|  1 | Lidwoorden | Dit zijn de lidwoorden |
+----+------------+------------------------+

+----------+-------------+-----------+------------+-----------+
| tabel_id | Naamval     | Mannelijk | Vrouwelijk | Onzijdig  |
+----------+-------------+-----------+------------+-----------+
|     1    | Nominativus | ὁ         | ἡ          | τό        |
|     1    | Genitivus   | τοῦ       | τῆς        | τοῦ       |
|     1    | Dativus     | τῷ        | τῇ         | τῷ        |
|     1    | Accusativus | τόν       | τήν        | τό        |
|     1    | Nominativus | οἱ        | αἱ         | τά        |
|     1    | Genitivus   | τῶν       | τῶν        | τῶν       |
|     1    | Dativus     | τοῖς      | ταῖς       | τοῖς      |
|     1    | Accusativus | τούς      | τάς        | τά        |
+----------+-------------+-----------+------------+-----------+

Het veld 'tabel' kan dus weg uit de eerste tabel en het veld 'tabel_id' is toegevoegd aan de tweede. In dat laatste veld komen dus de id's uit de eerste tabel (de records in 'lidwoorden' zouden eventueel ook een eigen id kunnen krijgen, trouwens)

Je linkt ze dan als volgt aan elkaar:

1
2
select * from lidwoorden
join compleet on compleet.id=lidwoorden.tabel_id

Ik heb voor de duidelijkheid de tabellen geen alias gegeven, maar vaak doe je zo:

1
2
select * from lidwoorden l
join compleet c on c.id=l.tabel_id

Je 'zet' dus niet de ene tabel in de andere, maar relateert ze aan elkaar met een join (en met 'select * from' haal je er gegevens uit).

Zo haal je alle velden van beide tabellen op, maar je kunt ook uit beide tabellen alleen bepaalde velden selecteren, bijvoorbeeld zo:

1
2
select l.Naamval, l.Mannelijk, c.titel, c.bijschrift from lidwoorden l
join compleet c on c.id=l.tabel_id


[ Bericht 0% gewijzigd door Arcee op 21-11-2015 08:10:32 ]
  zaterdag 21 november 2015 @ 12:35:09 #147
308438 Ser_Ciappelletto
Semi-professionele SJW
pi_157713356
quote:
0s.gif Op zaterdag 21 november 2015 08:02 schreef Arcee het volgende:

[..]

Wat je moet doen is het id van de ene tabel opnemen als extern veld in de andere tabel. Dat ziet er dan zo uit:
[ code verwijderd ]

Het veld 'tabel' kan dus weg uit de eerste tabel en het veld 'tabel_id' is toegevoegd aan de tweede. In dat laatste veld komen dus de id's uit de eerste tabel (de records in 'lidwoorden' zouden eventueel ook een eigen id kunnen krijgen, trouwens)

Je linkt ze dan als volgt aan elkaar:
[ code verwijderd ]

Ik heb voor de duidelijkheid de tabellen geen alias gegeven, maar vaak doe je zo:
[ code verwijderd ]

Je 'zet' dus niet de ene tabel in de andere, maar relateert ze aan elkaar met een join (en met 'select * from' haal je er gegevens uit).

Zo haal je alle velden van beide tabellen op, maar je kunt ook uit beide tabellen alleen bepaalde velden selecteren, bijvoorbeeld zo:
[ code verwijderd ]

Juist, dat ga ik eens proberen. Bedankt voor de hulp!
  zondag 22 november 2015 @ 14:20:49 #148
118585 Crutch
Filantroop || Taalzwengel
pi_157738226
quote:
0s.gif Op zaterdag 21 november 2015 08:02 schreef Arcee het volgende:

[..]

Wat je moet doen is het id van de ene tabel opnemen als extern veld in de andere tabel. Dat ziet er dan zo uit:
[ code verwijderd ]

Het veld 'tabel' kan dus weg uit de eerste tabel en het veld 'tabel_id' is toegevoegd aan de tweede. In dat laatste veld komen dus de id's uit de eerste tabel (de records in 'lidwoorden' zouden eventueel ook een eigen id kunnen krijgen, trouwens)

Je linkt ze dan als volgt aan elkaar:
[ code verwijderd ]

Ik heb voor de duidelijkheid de tabellen geen alias gegeven, maar vaak doe je zo:
[ code verwijderd ]

Je 'zet' dus niet de ene tabel in de andere, maar relateert ze aan elkaar met een join (en met 'select * from' haal je er gegevens uit).

Zo haal je alle velden van beide tabellen op, maar je kunt ook uit beide tabellen alleen bepaalde velden selecteren, bijvoorbeeld zo:
[ code verwijderd ]

Hulde voor de tijd nemen om het helder en compleet uit te leggen. ^O^
Je moeder is een hamster
  dinsdag 1 december 2015 @ 21:58:42 #149
118011 BrainOverfloW
Fok! around the Clock!
pi_157955868
Even een kort vraagje. Ik heb de volgende code:

1
2
3
4
5
6
7
8
$array = ["One","Two","Three"];

echo serialize($array);

unset($array[1]);
array_values($array);

echo serialize($array);

De eerste echo geeft me:
1a:3:{i:0;s:3:"One";i:1;s:3:"Two";i:2;s:5:"Three";}

De tweede echo geeft me:
1a:2:{i:0;s:3:"One";i:2;s:5:"Three";}

Het verwijderen van het element uit de array gaat op zich dus goed. Maar hoe krijg ik het voor elkaar dat die index (ik neem aan dat die "i" daar voor staat) weer netjes doornummert van 0 naar 1 ipv naar de originele 2.

Alvast bedankt :)
Whether or not you can become great at something, you can always become better.
And one day you'll wake up and find out how good you actually became, having transcended whatever limits you might have thought you couldn't pass.
Neil Degrasse Tyson
pi_157955965
quote:
0s.gif Op dinsdag 1 december 2015 21:58 schreef BrainOverfloW het volgende:
Even een kort vraagje. Ik heb de volgende code:
[ code verwijderd ]

De eerste echo geeft me:
[ code verwijderd ]

De tweede echo geeft me:
[ code verwijderd ]

Het verwijderen van het element uit de array gaat op zich dus goed. Maar hoe krijg ik het voor elkaar dat die index (ik neem aan dat die "i" daar voor staat) weer netjes doornummert van 0 naar 1 ipv naar de originele 2.

Alvast bedankt :)
array_values geeft een array terug. Als je het resultaat gebruikt zou je een element 0 en 1 moeten hebben.
When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')