Código PHP:
function boolean() {
global $query_arr, $querymode, $stype;
global $res, $allres, $rescount;
if (count($query_arr) == 1) {
foreach ($allres[0] as $k => $v) {
if ($k) {
$res .= pack("N",$k);
}
}
$rescount = intval(strlen($res)/4);
unset($allres);
return;
} else {
if ($stype == "AND") {
for ($i=0; $i<count($query_arr); $i++) {
if ($querymode[$i] == 2) {
$min = $i;
break;
}
}
for ($i=$min+1; $i<count($query_arr); $i++) {
if (count($allres[$i]) < count($allres[$min]) && $querymode[$i] == 2) {
$min = $i;
}
}
for ($i=0; $i<count($query_arr); $i++) {
if ($i == $min) {
continue;
}
if ($querymode[$i] == 2) {
foreach ($allres[$min] as $k => $v) {
if (array_key_exists($k,$allres[$i])) {
} else {
unset($allres[$min][$k]);
}
}
} else {
foreach ($allres[$min] as $k => $v) {
if (array_key_exists($k,$allres[$i])) {
unset($allres[$min][$k]);
}
}
}
}
foreach ($allres[$min] as $k => $v) {
if ($k) {
$res .= pack("N",$k);
}
}
$rescount = intval(strlen($res)/4);
return;
}
if ($stype == "OR") {
for ($i=0; $i<count($query_arr); $i++) {
if ($querymode[$i] != 1) {
$max = $i;
break;
}
}
for ($i=$max+1; $i<count($query_arr); $i++) {
if (count($allres[$i]) > count($allres[$max]) && $querymode[$i] != 1) {
$max = $i;
}
}
for ($i=0; $i<count($query_arr); $i++) {
if ($i == $max) {
continue;
}
if ($querymode[$i] != 1) {
foreach ($allres[$i] as $k => $v) {
$allres[$max][$k] = 1;
}
} else {
foreach ($allres[$i] as $k => $v) {
if (array_key_exists($k,$allres[$max])) {
unset($allres[$max][$k]);
}
}
}
}
foreach ($allres[$max] as $k => $v) {
if ($k) {
$res .= pack("N",$k);
}
}
$rescount = intval(strlen($res)/4);
return;
}
}
}
Tal ves lo este implementando mal pero el error persiste.
el safe modo esta off