I'm changing server, I switch from centos to ubuntu 20.04 with php 8.
Many of my sites on the server use this old class: https://github.com/xmyl/Snoopy-2.0/blob/master/Snoopy.class.php
The sites have been there for a long time and I use this class to access the various username and password protected areas of my affiliate programs, read the xml/rss/csv files, and process them automatically.
The problem is that this class often uses the each() function which was previously deprecated and now eliminated in php 8.
I need to change the server now (it wasn't expected), and get this class to work somehow. Afterwards I can calmly review all the scripts, update them, modify them etc, but now I need a quick and easy solution to make it work.
I tried changing each() to current(), and then to add this:
/**
* Adds the depreciated each() function back into 7.2
*/
if (!function_exists('each')) {
function each($arr) {
$key = key($arr);
$result = ($key === null) ? false : [$key, current($arr), 'key' => $key, 'value' => current($arr)];
next($arr);
return $result;
}
}
It didn't work much, the script ends in: Fatal error: Allowed memory size....
There is a quick and easy way to get it to work? (temporarily) Or a quick alternative that works as well as snoopy?
Just to close... solved in 5 seconds... the solution...
if (!function_exists('each')) {
function each(array &$array) {
$value = current($array);
$key = key($array);
if (is_null($key)) {
return false;
}
// Move pointer.
next($array);
return array(1 => $value, 'value' => $value, 0 => $key, 'key' => $key);
}
}
https://gist.github.com/k-gun/30dd2bf8b22329a2dbc11a045aed3859