Door
Hans De Ridder
op 25-09-2017 23:29
gewijzigd op 25-09-2017 23:31
2.412 views
Idee:
Ik geef mijn leden de mogelijkheid om een persoonlijke youtube top 20 samen te stellen.
Daarvoor moet ik uit de samengestelde lijsten eerst de duplicate items te verwijderen.
Het lukt wel, maar als de lege plekken verwijderen, dan wordt niet meer gekeken naar de case sensitive.
Dat komt door het toepassen van array_splice.
Iemand een mogelijkheid om een bruikbare array te produceren, die ik weer verder kan gebruiken?
Dit was een testje:
Bedankt voor de snelle response Ben.
Ik heb unset geprobeerd, maar had dezelfde uitwerking als de lijst met de gaten.
Tenzij ik wat verkeerd heb gedaan natuurlijk.
Het enige probleem dat je krijgt is dat je keys niet meer corresponderen met de lengte. Kortgezegd kun je op deze manier niet langer met for door de array gaan. Dan zul je foreach moeten gebruiken.
Je kunt eventueel rond regel 12 dit toevoegen:
<?php
$arr = array_values($arr);
?>
Ook zou ik gewoon array_filter() gebruiken om je lege elementen uit je array te verwijderen.
Het probleem is niet dat array_splice de case vermangelt, maar dat je eerste element wordt genegeerd.
Wat ik zo machtig interessant vind, is regel 8 van je script. Je test daar $arr[$i], maar waar komt $i vandaan? Waarschijnlijk moet er nog een for-loopje omheen...
Zelfs met een for-loop mis je een element, alleen dan een andere: vdufteeVZyo. Niet geheel toevallig het eerste element na het eerste gat.
Dat komt door de manier waarop array_splice werkt. Numerieke indices worden niet behouden. Sterker nog: wanneer je array_splice aanroept, hernummert hij de indices en dán pas gaat hij splicen. Dat verklaart dus waarom je een element kwijtraakt.
Maar nu we dit hebben ontdekt, kunnen we ook ge/misbruik maken van die eigenschap: als je array_splice aanroept en aangeeft dat je *niets* wilt verwijderen, krijg je een keurig nette array terug.
Bedankt voor de reacties en oplossingen.
Ik werk met data opslag via IPTC (opslag in image)
Het is een experimentele website.
Met nadruk op promotie voor personen die iets met de artiestenwereld te maken hebben.
Ik heb voor dit probleem de oplossing gevonden in een groeiende string.
Hierbij wordt de groeistring bekeken op nieuwe in toe te voegen items van een string.
Uitsluitend nieuwe items worden toegevoegd aan de groeistring.
In de images staan de youtubes als volgt opgeslagen op locatie 2#115.
Opmerkingen en verbeteringen blijven uiteraard welkom...
Waarom splits je dit probleem niet op in deelproblemen?
Probleem #1: het (eenmalig) bijhouden van (unieke) video-id's.
Probleem #2: afspeellijsten van deze items in een specifieke volgorde (mogelijk gekoppeld aan personen).
En waarom ben je aan het modderen met arrays? Waarom sla je dit niet op in een database? Dan was je vrij snel tot een constructie gekomen waarbij je video's, gebruikers en afspeellijsten organiseert in (koppel)tabellen.
Het opslaan van data in afbeeldingen is een beetje vergezocht? Als je gestructureerd data wilt opslaan en je niet de beschikking hebt over een database lijken mij JSON of XML veel betere alternatieven? Maar niet een of andere zelf gebreide standaard :/.
Het is een experimentele site.
Dus zoek ook niet altijd vanzelfsprekende oplossingen.
Ik heb de beschikking over een database. (Gedeelde server).
Maar heb wat geexperimenteerd met opslag van gegevens in images.
Dat voldoet prima.
Makkelijk op te slaan en elke output is eenvoudig op te roepen.
Met een paar regels PHP heb ik het nu zo,
dat de positie op de individuele lijst bepalend is voor het aantal toegekende punten.
Die worden dan bij elkaar opgeteld.
En dat bepaalt weer uiteindelijk hoe de site stemlijst eruit ziet.
Er zijn al heel wat blokken gemaakt.
Website onderdelen, registratie/inlog,/wijzigingen, googlemaps,
Maar soms wel leuk om als afleiding even een optie te proberen.
Er zit geen druk op.
Gewoon hobby. Over poosje wellicht online.
De verschillende blokken van de website zijn zo goed als klaar.
Maar soms als afleiding is het wel leuk wat mogelijke opties te bestuderen.
En vast stuk uit te werken.
Er zit geen druk op.
Is gewoon voor mezelf.
En als ik het zinnig vind dan komt het online.
Vandaar dat ik ook als thema heb 'promotie artiestenwereld'.
Dat doel geeft genoeg creativiteit.
Ik creeer geen nieuwe standaard.
IPTC is gewoon opgenomen in PHP.
Maar vooral bedoeld om fotogegevens op te slaan.
Ik gebruik het wat anders.