Lo que pasa es que los dos primeros foreach() no hacen nada real, sólo iteras sin sentido.
Lo que debes hacer es iterar un solo array y utilizando el índice obtener los demás elementos de los otros arreglos:
Código PHP:
foreach ($_REQUEST['item'] as $key => $item) {
$desc = $_REQUEST['precio'][$key];
$precio = $_REQUEST['precio'][$key];
// etc...
}
A eso le puedo llamar "arreglos paralelos", eso porque al ser similares se pueden acceder sin iterarlos todos mediante el índice en común.