1. Übergeben Sie eine beliebige Anzahl von Funktionsparametern
Bei der .NET- oder JAVA-Programmierung ist die Anzahl der Funktionsparameter im Allgemeinen festgelegt, in PHP ist dies jedoch möglich um eine beliebige Anzahl von Parametern zu verwenden. Das folgende Beispiel zeigt Ihnen die Standardparameter einer PHP-Funktion:
Php-Code
// Funktion mit zwei Standardparametern
function foo($arg1 = ”, $arg2 = ”) {
echo „arg1: $arg1n“;
echo „arg2: $arg2n“; hallo
arg2: world
*/
foo();
/* Ausgabe:
arg1:
arg2:
*/
Das folgende Beispiel ist PHP Die Verwendung unbestimmter Parameter verwendet die Methode ?func_get_args():
// Ja, die formale Parameterliste ist leer
function foo() {
// Ruft ein Array aller eingehenden Parameter ab
$args = func_get_args();
foreach ($args as $k => $v) {
echo „arg“.($k 1)..“: $vn“;
foo();
/* Es wird nichts ausgegeben*/
foo('hello'); 'hello', 'world', 'again');
/* Ausgabe
arg1: hallo
arg2: world
arg3: again
*/
2. Verwenden Sie glob(), um Dateien zu finden
Die Funktionsnamen der meisten PHP-Funktionen können ihren Zweck buchstäblich verstehen, aber wenn Sie ?glob() sehen, verstehen Sie möglicherweise nicht, was das ist Wird verwendet für. Tatsächlich ist glob() dasselbe wie scandir() und kann zum Suchen von Dateien verwendet werden. Bitte beachten Sie die folgende Verwendung:
PHP-Code
// Holen Sie sich alle Suffixe von PHP-Dateien
$files = glob('*.php');
print_r($files);
/* Ausgabe:
Array
(
[0] => ; phptest.php
[1] => pi.php
[2] => post_output.php
[3] => test.php
)
Sie können auch nach mehreren Suffixen suchen:
PHP-Code
// PHP-Dateien und TXT-Dateien abrufen
$files = glob('*.{php, txt}', GLOB_BRACE );
print_r($files);
/* Ausgabe:
Array
(
[0] => phptest.php
[1] = > pi.php
[2] => post_output.php
[3] => test.php
[4] => log.txt
)
*/
Sie können auch den Pfad hinzufügen:
PHP-Code
$files = glob('../images/ a*.jpg' );
print_r($files);
/* Ausgabe:
Array
(
[0] => ../images/apple.jpg
[1] = > ../images/art.jpg
)
*/
Wenn Sie den absoluten Pfad erhalten möchten, können Sie die Funktion ?realpath() aufrufen:
PHP-Code
$files = glob('../images/a*.jpg');
// wendet die Funktion auf jedes Array-Element an
$files = array_map('realpath' , $files);
print_r($files);
/* Ausgabe sieht aus wie:
Array
(
[0] => C:wampwwwimagesapple.jpg
[1 ] => C:wampwwwimagesart.jpg
)
3. Der Speicherrecycling-Mechanismus von PHP ist bereits sehr leistungsfähig Verwenden Sie ein PHP-Skript, um die aktuelle Speichernutzung zu ermitteln, rufen Sie die Funktion „memory_get_usage()“ auf, um die aktuelle Speichernutzung zu ermitteln, und rufen Sie die Funktion „memory_get_peak_usage()“ auf, um die maximale Speichernutzung zu ermitteln. Der Referenzcode lautet wie folgt:
PHP-Code
echo „Initial: „.memory_get_usage()“. /
//Speicher verwenden
for ($i = 0; $i < 100000; $i ) {
$array []= md5($i);
}
/ / Halben Speicher löschen
for ($i = 0; $i < 100000; $i ) {
unset($array[$i]);
echo „Final:“. memory_get_usage( )."
/* druckt
Final: 885912 bytes
*/
echo "Peak: ".memory_get_peak_usage()." bytes n"; Spitzenwert ausgeben
Spitzenwert: 13687072 Bytes
*/
4. Informationen zur CPU-Auslastung abrufen
Nachdem Sie die Speichernutzung ermittelt haben, können Sie auch getrusage() von PHP verwenden, um die CPU-Auslastung zu ermitteln. Diese Methode ist unter Windows nicht verfügbar.
PHP-Code
print_r(getrusage());
/* Ausgabe
Array
(
[ru_oublock] => 0
[ru_inblock] => ; 0
[ru_msgsnd] => 2
[ru_msgrcv] => ; 3864
[ru_minflt] => 94
[ru_majflt] => 0
[ru_nsignals] => 1
[ru_nvcsw] => 67
[ru_nivcsw] => ; 4
[ru_nswap] => 0
[ru_utime.tv_usec] => 0
[ru_utime.tv_sec] => 0
[ru_stime.tv_usec] => >[ru_stime.tv_sec] => 0
)
*/
Diese Struktur erscheint sehr unklar, es sei denn, Sie kennen die CPU sehr gut. Hier einige Erklärungen:
ru_oublock: Blockausgabeoperation
ru_inblock: Blockeingabeoperation
ru_msgsnd: gesendete Nachricht
ru_msgrcv: empfangene Nachricht
ru_maxrss: maximale residente Satzgröße
ru_ixrss: Gesamtgröße des gemeinsam genutzten Speichers
ru_idrss: Gesamtgröße des nicht gemeinsam genutzten Speichers
ru_minflt: Seitenrecycling
ru_majflt: Seitenungültigmachung
ru_nsignals: Empfangene Signale
ru_nvcsw: Aktiver Kontextwechsel
ru_nivcsw : passive Kontextumschaltung
ru_nswap: Swap-Bereich
ru_utime.tv_usec: Benutzermoduszeit (Mikrosekunden)
ru_utime.tv_sec: Benutzermoduszeit (Sekunden)
ru_stime.tv_usec: Systemkernelzeit (Mikrosekunden)
ru_stime.tv_sec: Systemkernelzeit? (Sekunden)
Um zu sehen, wie viel CPU Ihr Skript verbraucht, müssen wir uns die Werte „Benutzermoduszeit“ und „Systemkernelzeit“ ansehen. Die Sekunden- und Mikrosekundenteile werden separat bereitgestellt. Sie können den Mikrosekundenwert durch 1 Million dividieren und zum Sekundenwert addieren, um die Anzahl der Sekunden mit einem Bruchteil zu erhalten.
PHP-Code
// 3 Sekunden lang schlafen (nicht beschäftigt)
$data = getrusage();
echo „Benutzerzeit:“.
($data['ru_utime.tv_sec']
$data['ru_utime.tv_usec'] / 1000000);
echo „Systemzeit:“
($data['ru_stime.tv_sec ']
$data['ru_stime.tv_usec'] / 1000000);
/* Ausgabe
Benutzerzeit: 0,011552
Systemzeit: 0
*/
Schlaf beansprucht keine Systemzeit. Wir können uns das folgende Beispiel ansehen:
PHP-Code
// Schleife 10 Millionen Mal (beschäftigt)
for($i=0;$ i< 10000000;$i ) {
}
$data = getrusage();
echo „Benutzerzeit:“
($data['ru_utime.tv_sec']
$data [' ru_utime.tv_usec'] / 1000000);
echo „Systemzeit: „
Dies dauerte etwa 14 Sekunden CPU-Zeit, von denen fast alle Benutzerzeit waren, da es keine Systemaufrufe gab.
Systemzeit ist die Zeit, die die CPU damit verbringt, Kernel-Anweisungen bei Systemaufrufen auszuführen. Hier ist ein Beispiel:
PHP-Code
$start = microtime(true);
// rufe microtime etwa 3 Sekunden lang auf
while(microtime(true) – $start < 3) {
}
$data = getrusage();
echo „Benutzerzeit:“
($data['ru_utime.tv_sec']
$data['ru_utime.tv_usec '] / 1000000);
echo "Systemzeit: "
($data['ru_stime.tv_sec']
$data['ru_stime.tv_usec'] / 1000000); druckt
Benutzerzeit: 1.088171
Systemzeit: 1.675315
*/
Wir können sehen, dass das obige Beispiel mehr CPU verbraucht.
5. Systemkonstanten abrufen
PHP bietet sehr nützliche Systemkonstanten, mit denen Sie die aktuelle Zeilennummer (__LINE__), Datei (__FILE__), Verzeichnis (__DIR__) und Funktionsnamen abrufen können ( __FUNCTION__), Klassenname (__CLASS__), Methodenname (__METHOD__) und Namespace (__NAMESPACE__), ähnlich wie bei der C-Sprache.
Wir können davon ausgehen, dass diese Dinge hauptsächlich zum Debuggen verwendet werden, aber nicht unbedingt. Wir können beispielsweise ?__FILE__ verwenden, wenn wir andere Dateien einbinden (natürlich können Sie auch __DIR__ nach PHP 5.3 verwenden), wie folgt ist ein Beispiel.
PHP-Code
// Dies ist relativ zum Pfad des geladenen Skripts
// Es kann zu Problemen kommen, wenn Skripte aus verschiedenen Verzeichnissen ausgeführt werden
require_once('config/database.php');
// Dies ist immer relativ zum Pfad dieser Datei
//, egal wo sie eingefügt wurde
require_once(dirname(__FILE__) . '/config/database.php'); >Im Folgenden wird __LINE__ verwendet, um einige Debug-Informationen auszugeben, die Ihnen beim Debuggen des Programms helfen:
PHP-Code
// etwas Code
// …
my_debug(“eine Debug-Nachricht ", __LINE__);
/* Ausgabe
Zeile 4: eine Debug-Nachricht
*/
// noch etwas Code
// …
my_debug("another debug message" , __LINE__);
/* Ausgabe
Zeile 11: eine weitere Debug-Nachricht
*/
function my_debug($msg, $line) {
echo „Line $line: $msgn“; 🎜>}
6. Generieren Sie eine eindeutige ID
Viele Freunde verwenden md5(), um eine eindeutige Nummer zu generieren, aber md5() hat mehrere Nachteile: 1. Keine Reihenfolge, was zur Folge hat zu einer verringerten Sortierleistung in der Datenbank führen. 2. Zu lang und erfordert mehr Speicherplatz. Tatsächlich verfügt PHP über eine Funktion zum Generieren einer eindeutigen ID. Diese Funktion ist uniqid(). Das Folgende ist die Verwendung:
PHP-Code
// eindeutige Zeichenfolge generieren
echo uniqid();
/* Ausgabe
4bd67c947233e
*/
// Erzeuge eine weitere eindeutige Zeichenfolge
echo uniqid();
/* Ausgabe
4bd67c9472340
*/
Dieser Algorithmus wird basierend auf dem CPU-Zeitstempel generiert, also auf ähnliche Weise Zeit Innerhalb des Absatzes sind die ersten paar Ziffern der ID gleich, was auch die Sortierung der IDs erleichtert. Wenn Sie Duplikate besser vermeiden möchten, können Sie vor der ID ein Präfix hinzufügen, wie zum Beispiel:
PHP-Code
// Präfix
echo uniqid('foo_');
/* Ausgabe
foo_4bd67d6cd8b8f
*/
// hat mehr Entropie
echo uniqid(", true);
/* Ausgabe
4bd67d6cd8b926.12135106
*/
// Both
echo uniqid('bar_',true);
/* Ausgabe
bar_4bd67da367b650. 43684647
*/
7. Die Serialisierungsfunktion von PHP wird möglicherweise häufiger verwendet und ist häufiger anzutreffen, wenn Sie Daten in einer Datenbank oder Datei speichern müssen Sie können die Methoden serialize() und unserialize() in PHP verwenden, um Serialisierung und Deserialisierung zu implementieren. Der Code lautet wie folgt:
Php-Code
// Ein komplexes Array
$myvar = array(.
'hello',
42,
array(1,'two'),
'apple'
);
// Serialisierung
$string = serialize( $ myvar);
echo $string;
/* Ausgabe
a:4:{i:0;s:5:“hello“;i:1;i:42;i:2;a : 2:{i:0;i:1;i:1;s:3:“two“;}i:3;s:5:“apple“;}
*/
// Instanziierung in umgekehrter Reihenfolge
$newvar = unserialize($string);
print_r($newvar);
/* Ausgabe
Array
(
[0] => hallo
[1 ] => 42
[2] => Array
(
[0] => 1
[1] => zwei
)
[3 ] = > apple
)
Keine Sorge, PHP hat es bereits für Sie erledigt Die Funktionen json_encode() und json_decode() implementieren die Serialisierung des JSON-Formats. Der Code lautet wie folgt:
PHP-Code
// ein komplexes Array
$myvar = array(
' hallo',
42,
array(1,'two'),
'apple'
);
// in einen String konvertieren
$string = json_encode($myvar );
echo $string;
/* druckt
["hello",42,[1,"two"],"apple"]
*/
// Sie können es reproduzieren die ursprüngliche Variable
$newvar = json_decode($string);
print_r($newvar); >[1 ] => 42
[2] => Array
(
[0] => 1
[1] => zwei
)
3] = > Apple
)
8. String-Komprimierung
Wenn wir über Komprimierung sprechen, denken wir tatsächlich an Dateikomprimierung. Die Zeichenfolgenkomprimierung kann ebenfalls komprimiert werden. PHP bietet die Funktionen ?gzcompress() und gzuncompress():
Php code
$string =
“Lorem ipsum dolor sit amet, consectetur
adipiscing elit 🎜>adipiscing.Es ist wichtig, den Coaching-Prozess zu verfolgen. Einige
der Preis der Ullamcorper-Urne, die gezielt wurde. Auch bei den Massen
aber die hässliche Zeit der Trauer. Curabitur sed nibh eu elit
sanfte Hausaufgaben. Es ist das eigentliche Zuhause, die Konsequenz des Lebens
, um es von nun an zu dekorieren. In diesen großen Kindern
sagen wir uns, dass wir Coaching einsetzen sollen. Aber nicht meine Angst, sondern Lacinia
augue. Aber toll, es sei denn, dekoriere sanft in, weich
aber jetzt. Außerdem pünktlich zu den Hausaufgaben.
Ich muss den Hendrerit Schlesicker nicht fürchten
denn das tue ich nicht. Wie erwartet gibt es keinen Euismod-See zum Trinken
, den die Mitglieder der Euismod-Urne haben. „;
$compressed = gzcompress($string);
echo „Originalgröße:“. strlen($string)..“n“;
/* Originalgröße ausgeben
Originalgröße: 800
*/
echo „Komprimierte Größe:“. strlen($compressed)..“n“;
/* 解光剧后后图像
Komprimierte Größe: 418
*/
// 解光剧
$original = gzuncompress($compressed);
fast 50 % Komprimierungsrate. Gleichzeitig können Sie auch die PHP-Funktion verwenden. blog-content-contain" style="font-size: 14px">