/ / Schleife werfen Array, erkenne den Maximalwert und setze die vorherigen 1 - PHP - Arrays zurück

Loop - Throw - Array, Max - Wert erkennen und vorherige 1 - php - Arrays zurücksetzen

Ich möchte, dass mir jemand dabei hilft, bitte.

Ich habe dieses Array.

foreach ($callersHistoryArray as $key => $value) {

//check for duplicates and find the highest call duration
if(in_array($value["caller"], $item, true) && $value["process"] == 0)
{
$duplicates = array(
"key" => $key,
"totalTime" => $callersHistoryArray[$key]["totalDurationTime"]
);

echo print_r($duplicates, true);

if ($duplicates["totalTime"] > $max) {
$max = $duplicates["totalTime"];
$value["unique"] = 1;
}
}

Ich schleife werfen $callersHistoryArray und Duplikate erkennen, ein neues Array erstellen und die max totalTime von ihnen und setzen unique Wert zu 1.

Wenn ich in die zweite Position gehe foreach-loop, der vorherige muss sich ändern unique zu 1. Aber ich kann das nicht. Ich habe es benutzt prev($callersHistoryArray), um das letzte aber nichts zu bekommen.

Antworten:

0 für die Antwort № 1

Ich verstehe die Frage nicht ganz. Ich vermute, Sie möchten mit etwas wie dem folgenden beginnen:

<?php

$duplicates = array();
$maxTime = 0;
$unique = null;

foreach ($callersHistoryArray as $key => $value) {
//check for duplicates and find the highest call duration
if(in_array($value["caller"], $item, true) && $value["process"] == 0)
{
if ($maxTime < $value["totalDurationTime"]) {
$maxTime = $value["totalDurationTime"];
$unique = $key;
}
$duplicates[] = $value;
}
}

echo print_r($duplicates, true); // array of duplicates
echo print_r($callersHistoryArray[$unique], true); // item with highest time

Ungeachtet der Fehler sollten Sie jedoch ein Array der Duplikate erhalten und auch sagen, welcher Artikel die maximale Dauer hat. Ich weiß nicht wo $item kommt aus, also YMMV.

Möglicherweise müssen Sie auch zwei Elemente mit derselben maximalen Dauer behandeln.