3v4l.org

run code in 500+ PHP versions simultaneously
<?php class StrWrap { public string $s = ''; } // 1. On crée notre objet StrWrap principal ($a) $a = new StrWrap(); // 2. On construit le tableau piégé // On a besoin que $a !== $b, $b !== $c, et que prev($data) revienne sur $a // En insérant l'objet $a, puis une valeur $b, puis en reliant le pointeur via 'r:' $data = [ 0 => $a, 1 => "valeur_b", 2 => &$a // Utilisation de la référence pour forcer l'identité d'instance ]; // On sérialise le tableau $serialized = serialize($data); // Subtilité : Le challenge exige "str_contains($raw, 'r:')" (référence d'objet minuscule) // Si PHP génère un 'R:' (référence par pointeur), on s'assure de sa validité. // Pour forcer un 'r:', on duplique l'objet proprement en mémoire : $data_correct = array(); $data_correct[0] = $a; $data_correct[1] = "dummy_b"; $data_correct[2] = $a; // Ici PHP va générer un 'r:2' (référence à l'objet 0) $payload = base64_encode(serialize($data_correct)); echo $payload;

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.5.60.0200.00516.63
8.5.50.0170.00316.37
8.5.40.0200.00516.40
8.5.30.0150.00616.51
8.5.20.0220.00516.42
8.5.10.0170.00516.50
8.5.00.0110.00416.37
8.4.210.0060.00419.48
8.4.200.0150.00419.45
8.4.190.0120.00719.55
8.4.180.0120.00719.40
8.4.170.0150.00419.61
8.4.160.0170.00519.68
8.4.150.0170.00519.67
8.4.140.0150.00517.61
8.4.130.0140.00517.42
8.4.120.0140.00517.70
8.4.110.0150.00517.64
8.4.100.0170.00517.65
8.4.90.0150.00517.60
8.4.80.0170.00417.71
8.4.70.0150.00417.58
8.4.60.0180.00517.66
8.4.50.0170.00517.82
8.4.40.0170.00417.48
8.4.30.0190.00417.59
8.4.20.0150.00617.58
8.4.10.0160.00517.52
8.3.310.0130.00518.29
8.3.300.0140.00418.22
8.3.290.0140.00418.26
8.3.280.0120.00618.21
8.3.270.0140.00516.69
8.3.260.0150.00316.28
8.3.250.0160.00416.54
8.3.240.0150.00416.57
8.3.230.0140.00516.52
8.3.220.0190.00216.56
8.3.210.0190.00716.40
8.3.200.0190.00516.39
8.3.190.0160.00416.52
8.3.180.0180.00416.51
8.3.170.0190.00416.54
8.3.160.0140.00516.42
8.3.150.0150.00416.48
8.3.140.0170.00316.55
8.3.130.0150.00316.60
8.3.120.0130.00416.59
8.3.110.0130.00316.37
8.3.100.0160.00416.59
8.3.90.0160.00316.55
8.3.80.0170.00416.66
8.3.70.0150.00416.64
8.3.60.0160.00316.74
8.3.50.0150.00516.38
8.3.40.0160.00417.72
8.3.30.0130.00417.71
8.3.20.0120.00317.84
8.3.10.0100.00617.78
8.3.00.0150.00317.86
8.2.310.0120.00417.84

preferences:
50.76 ms | 736 KiB | 5 Q