Wie sonst von allen erwähnt, würde ein Unterschied vernachlässigbare sein und Sie sollten darüber nicht.
Das besagt aber, die zweite Methode sollte technisch performanter sein, weil (zumindest sieht es so aus) es die ganze Sache in einer einzigen Anweisung macht.
Wenn Sie dies tun:
$rules['a']['x'] = 'someValue';
$rules['a']['y'] = 'anotherValue';
... die PHP-Engine muss zunächst prüfen, ob $rules
vorhanden ist, ob es sich um ein Array ist, ein ArrayAccess
Objekt oder nicht (und Fehler in diesem Fall). Danach muss es dasselbe für $rules['a']
tun.
Und es muss zweimal tun, da beide Linien separate Ausdrücke darstellen.
Während auf der anderen Seite:
$rules['a'] = [
'x' => 'someValue',
'y' => 'anotherValue',
];
... nur überprüfen, was $rules
ist (nicht darum kümmern, ob $rules['a']
vorhanden ist oder welche Art es sich handelt), und es hat nur das einmal zu tun.
Beachten Sie, dass dies eine sehr, sehr vereinfachte Erklärung und es gibt viele andere Faktoren, die ins Spiel kommen, und einen Unterschied machen. Aber das ist der Vorteil einer Hochsprache wie PHP - im Allgemeinen müssen Sie sich nicht darum kümmern oder wissen, wie die Dinge hinter der Szene funktionieren.
Wenn Sie Leistungsoptimierungen vornehmen möchten, ist dies sicherlich die falsche Ansicht. Finden Sie heraus, wo Ihre "Flaschenhälse" sind und arbeiten Sie daran (pro Tipp: 9 von 10, es sind Ihre Datenbankabfragen).
[1st] (https://3v4l.org/pI9Ap/perf#output) und [2nd] (https://3v4l.org/EjVfZ/perf#output), ich bezweifle, dass es einen großen Unterschied machen wird . – Script47
Sie können selbst testen. Mach etwas wie $ startTime = microtime (true); für ($ i = 0; $ i <100000; $ i ++) {$ Regeln ['a'] ['x'] = 'someValue'; $ rules ['a'] ['y'] = 'andererWert';} echo 'total time ='. microtime (true) - $ startTime; 'und dasselbe für den anderen Fall. Aber ich denke auch, dass es einen großen Unterschied machen wird. –
@Tobias F ja genau ich schlug auch eine –