Ich debugge meine PHP-Fehler-Logs, um Hinweise, Warnungen und Fehler zu finden, die ich verpasst habe. Jetzt benutze ich die php array_rand()
Funktion, um 1 Element eines Arrays zu erhalten. Unter normalen Umständen funktioniert das ohne Probleme, aber in meinen PHP-Fehlerprotokollen gibt es einige Warnungen bezüglich des Codes unter Verwendung von array_rand()
.PHP array_rand() löst Warnung aus Ich erwarte nicht
PHP Warning: array_rand(): Second argument has to be between 1 and the number of elements in the array in ...
Ich verwende array_rand() in etwa so aus:
$arr =
[
3 => [
999 => "10-G2",
1366 => "11-B2",
1481 => "14-C3",
]
];
$randomLoc = array_rand($arr[3], 1);
Dies kehrt mich 999
, 1366
oder 1481
. Wenn dieses Array leer ist,
Wenn $arr[3]
emtpy ist, wird es eine leere Warnung
Warning: array_rand(): Array is empty in
Wenn $arr[3]
nicht isset, werfen sie eine undefined Offset Ankündigung vor der Warnung werfen
Notice: Undefined offset: 3 in
Also, wie ist es möglich, ein zweites Argument zu bekommen muss zwischen 1 und ... Warnung ohne die undefinierte Offset-Meldung sein?
Lokal verwende ich PHP 7.1 und warne eine leere Warnung. PHP 7.0 wirft tatsächlich und das zweite Argument muss zwischen 1 .. Warnung liegen. Und da ist mein fuckup, Fehlerprotokoll ist aus PHP 7.0 (Produktion) und meine Entwicklungsumgebung ist schon auf PHP 7.1 – Timo002
Interessant. Ich habe das Änderungsprotokoll für die Funktion array_rand im PHP-Handbuch überprüft und diese Änderung in der Warnmeldung nicht erwähnt. Die tatsächliche Warnmeldung wird ebenfalls nicht erwähnt. Es erwähnt zwar Änderungen in PHP 7.1, hat aber nichts damit zu tun: Es ist seltsam, dass dieses "Feature" nicht dokumentiert ist. –