1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php /** * Zorgt ervoor dat de key van de array items een van de values($flipKey) van de objecten in de array($toFlip) wordt * * @param array $toFlip array met objecten * @param string $flipKey key in object * @return array */ function flipObjectArray($toFlip, $flipKey) { $ret = array(); foreach ($toFlip as $k => $v) { $ret[$v->{$flipKey}] = $v; } return $ret; } ?> |
In de objecten zitten unieke md5 keys ipv een gewone index die ik van de CouchDB terug krijg. Op deze manier heb ik een array met keys die ik gewoon kan gebruiken voor diverse dingen.quote:Op dinsdag 8 april 2014 12:23 schreef totalvamp het volgende:
Ook even een test toevoegen of je $flipKey wel bestaat in het object.
Maar ik neem aan dat je dit doet omdat je wilt sorteren? Anders zie ik sowieso niet echt het nut in van deze functie.
Je weet dat je Objecten kunt behandelen als arrays? Dan hoef je ze niet eens om te zetten ^^.quote:Op dinsdag 8 april 2014 12:55 schreef Sitethief het volgende:
[..]
In de objecten zitten unieke md5 keys ipv een gewone index die ik van de CouchDB terug krijg. Op deze manier heb ik een array met keys die ik gewoon kan gebruiken voor diverse dingen.
Sorteren kan CouchDB gewoon voor mij doen btw.
Hij heeft de array in zich die geflipt moet worden? $flipArray dan misschien? Het is een globale functie die overal en nergens ingezet moet kunnen worden in principe.quote:Op dinsdag 8 april 2014 12:06 schreef boem-dikkie het volgende:
Ik ben er zelf sowieso van om variabelen te gebruiken die beschrijven wat ze in zich hebben. $toFlip is natuurlijk onduidelijk als de pest, en dat je er een comment blok bij zet die zegt dat je $toFlip een array met objecten is helpt ook vrij weinig.
Maar dat is kwestie van smaak.
Ik zet niks om? Maar hoe bedoel je?quote:Op dinsdag 8 april 2014 12:56 schreef totalvamp het volgende:
[..]
Je weet dat je Objecten kunt behandelen als arrays? Dan hoef je ze niet eens om te zetten ^^.
1 2 3 4 5 6 7 8 9 10 | <?php Array ( [0] => stdClass Object ( [id] => 106434159d04626babfa1f4c81d3d0b2 [value] => .... ) } ?> |
Nouja je zet het nu dus om van dat naar dit?quote:Op dinsdag 8 april 2014 13:04 schreef Sitethief het volgende:
[..]
Ik zet niks om? Maar hoe bedoel je?
Dit zijn de soort arrays die die functie moet omzetten.
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 | <?php Array ( [106434159d04626babfa1f4c81d3d0b2] => stdClass Object ( [id] => 106434159d04626babfa1f4c81d3d0b2 [value] => .... ) } ?> |
Klopt. Is er een betere methode? Dit was het beste wat ik zelf kon bedenken.quote:Op dinsdag 8 april 2014 13:13 schreef totalvamp het volgende:
[..]
Nouja je zet het nu dus om van dat naar dit?
[ code verwijderd ]
Nouja wat is er mis met de waarde direct uit het object aanroepen? Welke probleem moet dit een oplossing voor zijn?quote:Op dinsdag 8 april 2014 13:15 schreef Sitethief het volgende:
[..]
Klopt. Is er een betere methode? Dit was het beste wat ik zelf kon bedenken.
1 2 3 4 5 6 7 | <?php $lengthArray = count($data); for($i=0;$i<$lengthArray;$i++) { $id = $data[$i]->id; $id = $data[$i]['id']; } ?> |
Omdat ik die array op meerdere plekken binnen een class nodig heb voor het opbouwen van verschillende dingen deels gebaseerd op dat ID, ik wil er dan niet iedere keer doorheen loopen of zoeken maar gewoon de key kunnen gebruiken om de juiste data te selecteren.quote:Op dinsdag 8 april 2014 13:18 schreef totalvamp het volgende:
[..]
Nouja wat is er mis met de waarde direct uit het object aanroepen? Welke probleem moet dit een oplossing voor zijn?
Nu heb je bijvoorbeeld:
[ code verwijderd ]
Dus sowieso al toegang daartoe.
Heb je voorbeelden? Ik neem aan dat je voor veel dingen maar 1 van de objecten nodig hebt voor data?quote:Op dinsdag 8 april 2014 13:23 schreef Sitethief het volgende:
[..]
Omdat ik die array op meerdere plekken binnen een class nodig heb voor het opbouwen van verschillende dingen deels gebaseerd op dat ID, ik wil er dan niet iedere keer doorheen loopen of zoeken maar gewoon de key kunnen gebruiken om de juiste data te selecteren.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php class Foo { private $data = array(); public function remove($id) { unset($this->data[$id]); } public function check($id) { check($this->data[$id]); } } ?> |
Inderdaad, maar ook complexere dingen, zoals kijken of bepaalde gebruikers recht hebben op de data erin gebaseerd op de context, lijsten in HTML bouwen van data uit value met andere items op ID eraan gelinked etc. Dit is stukken makkelijker als ik alle items gewoon op ID kan vinden.quote:Op dinsdag 8 april 2014 13:27 schreef totalvamp het volgende:
[..]
Heb je voorbeelden? Ik neem aan dat je voor veel dingen maar 1 van de objecten nodig hebt voor data?
Even een klein voorbeeld van hoe ik er nu van uitga dat je het nodig hebt
[ code verwijderd ]
Inderdaad, al zou ik het zelf anders hebben gedaan (niet persee beter, maar anders, waarschijnlijk meer resources uiteindelijk).quote:Op dinsdag 8 april 2014 13:36 schreef Sitethief het volgende:
[..]
Inderdaad, maar ook complexere dingen, zoals kijken of bepaalde gebruikers recht hebben op de data erin gebaseerd op de context, lijsten in HTML bouwen van data uit value met andere items op ID eraan gelinked etc. Dit is stukken makkelijker als ik alle items gewoon op ID kan vinden.
Het verschil is snelheid is er nauwelijks momenteel bij mijn kleine testcase, maar hoe meer er in de array zit hoe meer foreach volgens mij aan geheugen kost omdat die een kopie van de array maakt, dan is for volgens mij gewoon beter, ook omdat de keys altijd een index zijn.quote:Op dinsdag 8 april 2014 13:42 schreef totalvamp het volgende:
[..]
Inderdaad, al zou ik het zelf anders hebben gedaan (niet persee beter, maar anders, waarschijnlijk meer resources uiteindelijk).
In dat geval is je huidige code (op wat checks na) gewoon goed en moet je zelf even testen of je for of foreach gebruikt.
Bij je foreach kun je $k weghalen aangezien je die niet gebruikt.
Doe een foreach by reference.quote:Op dinsdag 8 april 2014 13:44 schreef Sitethief het volgende:
[..]
Het verschil is snelheid is er nauwelijks momenteel bij mijn kleine testcase, maar hoe meer er in de array zit hoe meer foreach volgens mij aan geheugen kost omdat die een kopie van de array maakt, dan is for volgens mij gewoon beter, ook omdat de keys altijd een index zijn.
Ik vind reference altijd een redelijk lastig conceptquote:Op dinsdag 8 april 2014 13:48 schreef totalvamp het volgende:
[..]
Doe een foreach by reference.
Nadeel van for is de count($array), hier maakt hij ook een kopie bij aan. en bij de foreach dus niet.
Hoezo lastig? je hoeft er alleen een & voor te zettenquote:Op dinsdag 8 april 2014 14:25 schreef Sitethief het volgende:
[..]
Ik vind reference altijd een redelijk lastig concept, dus ik denk dat ik het bij de for loop houd voor nu.
Ik kijk er dan twee weken later over heen dat er & staat als ik die functie ga gebruiken en rare dingen zie gebeurenquote:Op dinsdag 8 april 2014 14:32 schreef totalvamp het volgende:
[..]
Hoezo lastig? je hoeft er alleen een & voor te zetten
Ja je moet wel oppassen met referentiesquote:Op dinsdag 8 april 2014 14:35 schreef Sitethief het volgende:
[..]
Ik kijk er dan twee weken later over heen dat er & staat als ik die functie ga gebruiken en rare dingen zie gebeuren. Goed documenteren dus
.
Oh boyquote:Op dinsdag 8 april 2014 14:40 schreef totalvamp het volgende:
[..]
Ja je moet wel oppassen met referenties
Als je echt veel data gaat gebruiken zou ik adviseren dit even door te lezen:
http://matthewturland.com/2010/05/20/new-spl-features-in-php-5-3/
Ja staat leuke info bijquote:Op dinsdag 8 april 2014 14:47 schreef Sitethief het volgende:
[..]
Oh boy, ik had al een keertje een ArrayIterator gebruikt ergens. Heap klinkt erg interessant voor een aantal dingen die ik wil doen
.
quote:Op donderdag 10 april 2014 00:02 schreef xaban06 het volgende:
Ik ben bezig met een project om mijn slimme meter uit te lezen en maak hier vervolgens een grafiek van.
Ik krijg de resultaten te zien als:
0000.00
Dus 0000.38 is 380 Watt
Dus 0012.21 is 12210 Watt
Met welke PHP kan je deze getallen omzetten?
1 2 3 | <?php echo '0000.38' * 1000; ?> |
Het is basis wiskundequote:
quote:Op donderdag 10 april 2014 00:17 schreef totalvamp het volgende:
[..]
Het is basis wiskunde
daarnaast staat er een fout in de code van light. Getallen zijn niet met quotes.
Je kunt gebruik maken van DateTime object. Of gewoon 2 uur toevoegen aan de tijd.quote:Op donderdag 10 april 2014 00:18 schreef xaban06 het volgende:
[..]
[ afbeelding ]
Huidig verbruik in WattAlleen klopt de tijd niet op de server zie ik net, loopt 2 uur achter
Ik ga zo ntp installeren, tijd moet gewoon kloppen op de serverquote:Op donderdag 10 april 2014 00:21 schreef totalvamp het volgende:
[..]
Je kunt gebruik maken van DateTime object. Of gewoon 2 uur toevoegen aan de tijd.
Misschien klopt het wel, in welke tijdszone staat de server?quote:Op donderdag 10 april 2014 00:22 schreef xaban06 het volgende:
[..]
Ik ga zo ntp installeren, tijd moet gewoon kloppen op de server
In de meterkastquote:Op donderdag 10 april 2014 00:23 schreef totalvamp het volgende:
[..]
Misschien klopt het wel, in welke tijdszone staat de server?
je kunt in php de tijdszone zetten,mocht je dat ooit willenquote:Op donderdag 10 april 2014 00:24 schreef xaban06 het volgende:
[..]
In de meterkastDraait op een Raspberry Pi. Zo eens de tijdzone checken.
1 2 3 | <?php date_default_timezone_set('Europe/Amsterdam'); ?> |
Cool.quote:Op donderdag 10 april 2014 00:26 schreef totalvamp het volgende:
[..]
je kunt in php de tijdszone zetten,mocht je dat ooit willen
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 | pi@raspberrypi ~/php $ sudo dpkg-reconfigure tzdata Current default time zone: 'Europe/Amsterdam' Local time is now: Thu Apr 10 00:26:25 CEST 2014. Universal Time is now: Wed Apr 9 22:26:25 UTC 2014. pi@raspberrypi ~/php $ date +%Z CEST pi@raspberrypi ~/php $ uptime 00:26:38 up 1:00, 2 users, load average: 0.33, 0.19, 0.16 pi@raspberrypi ~/php $ |
Maar als je ze vanaf een externe bron inleest, zijn het meestal wel strings.quote:Op donderdag 10 april 2014 00:17 schreef totalvamp het volgende:
[..]
Het is basis wiskunde
daarnaast staat er een fout in de code van light. Getallen zijn niet met quotes.
Ik neem aan dat deze post over mijn posts gaatquote:Op donderdag 10 april 2014 07:04 schreef slacker_nl het volgende:
In PHP zijn references raar.
PHP gebruikt copy on write, dus je passed altijd een ref naar een functie, dus in je foreach/for loop heb je alleen maar refs, tenzij je de waardes van de array waarin je loopt aanpast. Als je kan, wilt, gebruik cursors om je data op te halen.
Je zou maar zo'n bug moeten vinden in een bestand met meer dan 2000 regels niet OO codequote:Op donderdag 10 april 2014 10:58 schreef Sitethief het volgende:
[..]
Ik neem aan dat deze post over mijn posts gaat.
Ik kwam er ook achter dat je naderhand de waardes in de foreach moet unsetten als je de array gereferenced hebt , anders gebeuren er soms rare dingen.
Ja, zat mobiel en geen zin om te quotenquote:Op donderdag 10 april 2014 10:58 schreef Sitethief het volgende:
[..]
Ik neem aan dat deze post over mijn posts gaat.
Ik kwam er ook achter dat je naderhand de waardes in de foreach moet unsetten als je de array gereferenced hebt , anders gebeuren er soms rare dingen.
En hoe lang is de data die je in de kolom title wilt stoppen?quote:Op donderdag 10 april 2014 18:03 schreef wipes66 het volgende:
weet iemand hoe dit kan? ik krijg steeds de volgende error: ERROR_CODE_22001 (22001) SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'title' at row 1
title is in mysql "varchar(300) utf8_unicode_ci" en ik gebruik een utf8 aware substring functie om hem te verkleinen
330, maar 200 als utf8. daarom snap ik niet waarom mysql deze error geeftquote:Op donderdag 10 april 2014 18:09 schreef Light het volgende:
[..]
En hoe lang is de data die je in de kolom title wilt stoppen?
Uit m'n hoofd weigert MySQL 5.5 data als het niet past, waar eerdere versies de data gewoon truncaten en je dat niet vertellen. Je kunt dat bij MySQL 5.5 nog wel instellen (maar de vraag is of je dat moet willen).
Inderdaad ik ookquote:Op donderdag 10 april 2014 12:44 schreef slacker_nl het volgende:
[..]
Ja, zat mobiel en geen zin om te quoten
Volgens mij wil je niet gaan referencen in PHP. Ik heb er ooit mee lopen spelen, maar ik kreeg er hoofdpijn van.
Zoiets schreef ik 5 jaar geleden, gelukkig vandaag de dag niet meerquote:Op donderdag 10 april 2014 11:51 schreef totalvamp het volgende:
[..]
Je zou maar zo'n bug moeten vinden in een bestand met meer dan 2000 regels niet OO codeheb ik een keer mee mogen maken.
ja dat is hemquote:Op vrijdag 11 april 2014 08:52 schreef slacker_nl het volgende:
Zou het hiermee te maken hebben?
http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html
Nee, je stuurt er LATIN1 naartoe, dus is de lengte van je string 330.quote:Op vrijdag 11 april 2014 10:04 schreef wipes66 het volgende:
[..]
ja dat is hemik gebruik pdo en alles zit dus dubbel utf8 encoded in de database zonder dat ik het door had
![]()
uhm? alles aan php zijde is gewoon utf8, inclusief chinese tekens. alleen pdo of mysql ging er van uit (gok ik) dat ik iso-8859 instuurde en dus werd het dubbel utf8.quote:Op vrijdag 11 april 2014 10:20 schreef slacker_nl het volgende:
[..]
Nee, je stuurt er LATIN1 naartoe, dus is de lengte van je string 330.
1 2 3 | <?php throw new Exception(serialize(array('error_id' => $error_id, 'error_vars' => $err_vars))); ?> |
Die mogelijkheid had ik al iets over gevonden, ik kwam echter niets tegen over het omzetten van de array naar een string en kon daardoor lastig een conclusie trekken wat beter zou zijn. Jij zou dus voor extenden gaan als ik het goed begrijp.quote:
Dan schrijf je toch je eigen error handler die dat wel aan kan?quote:Op dinsdag 15 april 2014 17:23 schreef bondage het volgende:
Is dit netjes om te doen?
[ code verwijderd ]
Het is namelijk niet mogelijk om een array aan een exception mee te geven en ik moet meerdere parameters aan de uiteindelijke foutmelding toe kunnen voegen.
Zo niet; is er een andere manier om dit te fixen?
Allang gedaanquote:Op woensdag 16 april 2014 12:42 schreef totalvamp het volgende:
[..]
Dan schrijf je toch je eigen error handler die dat wel aan kan?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php class statsOutputException extends Exception { private $error_id = 0; # intern numeriek id van de fout private $error_vars = array(); # array met fout eigenschappen public function __construct($error_params, $code = 0, Exception $previous = null) { # check of het een array met waarden betreft if(is_array($error_params)) { $this->error_id = isset($error_params['id']) ? $error_params['id'] : null; $this->error_vars = (isset($error_params['vars']) && is_array($error_params['vars'])) ? $error_params['vars'] : array(); }else{ # input is string of int, handel op de normale manier af $this->error_id = $error_params; } # roep Exception contructor aan parent::__construct($this->error_id, $code, $previous); } # geeft de vars terug welke de foutcode aanvullen met eventuele extra gegevens public function getErrorVars() { return $this->error_vars; } } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?xml_version "1.0" encoding="UTF-8" ?> <message> <messageheader> <debug>false</debug> <msgtype>incoming</msgtype> <msgversion>1.0</msgversion> <msgidentifier></msgidentifier> <errorcode>0</errorcode> <errorcodedescription>ok</errorcodedescription> <msgdatetime>2014-04-18T11:02:55</msgdatetime> </messageheader> <messagebody> <clip>200</clip> <did></did> <extension>200</extension> <prefix>Roy</prefix> </messagebody> </message> |
file_get_contents("php://input") ?quote:Op vrijdag 18 april 2014 11:06 schreef wobbel het volgende:
Helpik heb weer eens iets raars nodig. Het is mij ooit al gelukt, maarja waarom zou je zoiets dan bewaren.
Vanaf een leverancier wordt er naar ons XML gepusht (dmv POST) naar http://server.tld/test.php. Dit gebeurd zonder variable naam.
[ code verwijderd ]
Hoe kan ik dit met PHP afvangen? Een foreach met alle POSTS vars blijft angstvallig leeg.
Waarom gebruik je niet gewoon Disqus zelf?quote:Op zondag 20 april 2014 23:56 schreef pascal08 het volgende:
Ik ben op zoek naar een PHP library waarmee ik een soort mini-forumpje kan maken, zonder veel poespas, zoals phpBB.
Een beetje dit idee:
[ afbeelding ]
Ik wil het gebruiken als een soort berichtenprikbord waar iedereen berichtjes op kan plaatsen. Dus geen commentsystem.
Ongeveer wel ja.quote:Op maandag 21 april 2014 09:35 schreef Swetsenegger het volgende:
Dus eigenlijk wil je een gastenboek?
Omdat daar een heel gebeuren aan vastzit wat ik helemaal niet nodig heb.quote:Op maandag 21 april 2014 09:34 schreef Tijn het volgende:
[..]
Waarom gebruik je niet gewoon Disqus zelf?
Valt wel mee toch? Gewoon een accountje maken, includen op de pagina waar je het hebben wil en klaar is keesquote:Op maandag 21 april 2014 15:08 schreef pascal08 het volgende:
[..]
Omdat daar een heel gebeuren aan vastzit wat ik helemaal niet nodig heb.
Accountje aanmaken is voor veel mensen een dergelijke grote stap dat ze het maat laten zitten. Leuk voorbeeld is de case van Amazon die het account aanmaken niet meer verplicht stelde vooraf de aankoop.quote:Op maandag 21 april 2014 21:45 schreef Tijn het volgende:
[..]
Valt wel mee toch? Gewoon een accountje maken, includen op de pagina waar je het hebben wil en klaar is kees
Ik bedoelde de moeite die het kost om het te installeren. Reageren kan volgens mij ook zonder account.quote:Op dinsdag 22 april 2014 09:03 schreef Maringo het volgende:
[..]
Accountje aanmaken is voor veel mensen een dergelijke grote stap dat ze het maat laten zitten. Leuk voorbeeld is de case van Amazon die het account aanmaken niet meer verplicht stelde vooraf de aankoop.
Dat is gewoon niet wat ik zoek. Ik heb zelf inmiddels al een code geschreven. Kostte uiteindelijk minder moeite dan een geschikte library vinden.quote:Op maandag 21 april 2014 21:45 schreef Tijn het volgende:
[..]
Valt wel mee toch? Gewoon een accountje maken, includen op de pagina waar je het hebben wil en klaar is kees
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |