Она имеет если упрощенно такой вид:
-------------------
| callid | status |
-------------------
| 1 | an |
-------------------
| 1 | an |
-------------------
| 1 | no an |
-------------------
| 2 | an |
-------------------
| 2 | no an |
-------------------
| 3 | no an |
-------------------
Я получаю из него 1000 записей. Как исключить из результата все записи со имеющее в status "no an" если была хоть одна запись с таким же callid но со status "an"
Я решил приблизительно так: Но чувствую решил я или неправильно или не оптимально или и то и другое
<?php
// Данные для отладки
$data[0] = array("agent"=>"a1", "disposition"=>"ANSWERED", "callid"=>"12");
$data[1] = array("agent"=>"a2", "disposition"=>"NO ANSWER", "callid"=>"12");
$data[2] = array("agent"=>"a3", "disposition"=>"NO ANSWER", "callid"=>"12");
$data[3] = array("agent"=>"a4", "disposition"=>"NO ANSWER", "callid"=>"13");
$data[4] = array("agent"=>"a5", "disposition"=>"ANSWERED", "callid"=>"13");
$data[5] = array("agent"=>"a6", "disposition"=>"BUSY", "callid"=>"13");
$data[6] = array("agent"=>"a7", "disposition"=>"NO ANSWER", "callid"=>"14");
// Отладка
print ("<pre>");
print_r($data);
print ("</pre>");
$for_del = array();
for ($i = 0; $i < count($data); $i++) {
if ($data[$i]['disposition'] == "ANSWERED") {
for ($j = 0; $j < count($data); $j++) {
if ($data[$j]['callid'] == $data[$i]['callid'] AND $data[$j]['disposition'] == "NO ANSWER") {
$for_del[] = $j;
}
}
}
}
foreach ($for_del as $key => $value){
unset($data[$value]);
}
// Отладка
print ("<pre>");
print_r($data);
print ("</pre>");
echo json_encode($data);
?>