Wie Arrayinhalt extrahieren?

Hallo liebe Wissenden,

Ich brauche die IPs der letzten 12 Std. aus einem Array, welcher mir bereits zur Verfügung steht ($visitor), in einem eigenen Array separiert...
Dabei müssen die IPs (Schlüssel) erhalten bleiben
z.B. - ursprünglicher Array:

$visitor = array (
"82.113.98.232" => "1502394033" ,
 "141.91.136.43" => "1502459360" ,
 "65.55.210.120" => "1502480581" ,
 "131.253.27.14" => "1502559264" ,
 "199.30.24.228" => "1502582134" ,
 "92.230.42.103" => "1502677175"

);

neuer Array:

$new= array (
 "199.30.24.228" => "1502582134" ,
 "92.230.42.103" => "1502677175"

);

Nun habe ich mit array_slice mein Glück versucht - leider erfolglos!
$new= array_slice($visitor, (time()-43200), null, true);
Leider gab print_r($new); nur Array () aus.
Wenn ich das richtig verstanden habe ist der Fehler, daß die IPs (KEYs) mit dem Timestamp-Wert verglichen werden, was allein an den Formaten scheitern muss.

Wer kann mir zur Lösung verhelfen?

LG Baerchen

Hallo,

du kannst in diesem Fall array_slice nicht verwenden, da das nur mit den Keys (den IP-Adressen) aber nicht den Werten (dem Zeitstempel) arbeitet. Du müsstest also die einzelnen Array-Elemente durchgehen und in das neue Array kopieren.

Ungefähr so:

foreach ($visitor as $key => $value) {
print "$key -- $value\n";
if ($value >= (time()-43200))
$new[$key] = $value;
}

print_r($new);

Gruß,
Steve

Hallo Steve,

du kannst in diesem Fall array_slice nicht verwenden, da das nur mit den
Keys (den IP-Adressen) aber nicht den Werten (dem Zeitstempel)
arbeitet.

Also lag ich im Grunde richtig...!

Danke für deinen Code, der hat mich zum Ziel geführt...
Die 2. Zeile war an dieser Stelle zwar unnötig, half mir aber während der Testphase an anderer Stelle ebenfalls weiter. (Im übrigen -wer es ebenfalls braucht-: "/n" muss mit "
" ersetzt werden...)

foreach() hatte ich zwar auch ergoogelt, aber nicht weiter beachtet, da ich diese Funktion nicht bzw. erst durch deine Antwort begriffen habe ( - war mir vorher wohl zu abstrakt).

Nochmals Danke.
Baerchen

Die Ersetzung muss heißen:

<br />