/**
  * Transforma un array asociativo a un objeto del tipo CompraVenta
  *
  * @author Jonathan Sandoval     <*****@*****.**>
  * @param  Array $array          Arreglo Asociativo con los datos de una CompraVenta
  * @return CompraVenta           Objeto de tipo CompraVenta con datos del array recibido
  **/
 static function array_CompraVenta($arrayCompraVenta = array())
 {
     $tablaHerramientaComprada = constant('TABLA_HERRAMIENTA_COMPRADA');
     $CompraVenta = new CompraVenta();
     //Le ponemos los datos de lo que hemos recibido del array
     $CompraVenta->setID($arrayCompraVenta["ID"]);
     $CompraVenta->setSucursal(ControladorSucursal::obtenerSucursalID($arrayCompraVenta["Sucursal"]));
     $CompraVenta->setCliente(ControladorCliente::obtenerClienteID($arrayCompraVenta["Cliente"]));
     $CompraVenta->setEnvioDomicilio($arrayCompraVenta["Envio_Domicilio"]);
     $CompraVenta->setFacturar($arrayCompraVenta["Factura"]);
     $CompraVenta->setFecha($arrayCompraVenta["Fecha"]);
     //Obtenemos los datos de las herramientas
     $herramientaC = new HerramientaComprada();
     $herramientas = array();
     $cantidades = array();
     $identificador = $arrayCompraVenta["Herramienta_Comprada"];
     $consulta = "SELECT * \n                         FROM {$tablaHerramientaComprada}\n                         WHERE Identificador = {$identificador}";
     $res = ControladorBaseDatos::query($consulta);
     while ($row = $res->fetch_assoc()) {
         $herramientas[] = $row["ID_Herramienta"];
         $cantidades[] = $row["Cantidad"];
     }
     $herramientaC->setCantidad($cantidades);
     $herramientaC->setIDHerramienta($herramientas);
     $herramientaC->setIdentificador($identificador);
     $CompraVenta->setHerramientaComprada($herramientaC);
     return $CompraVenta;
 }
<?php

require_once __DIR__ . '/../../Clases/ControladorCompraVenta.php';
if ($_REQUEST["herramientas"] == '*') {
    echo 'NO';
} else {
    //Creación de un Objeto del tipo CompraVenta
    $compra = new CompraVenta();
    //obtención del cliente
    $cliente = ControladorCliente::obtenerClientes()[$_REQUEST["cliente"]];
    $compra->setCliente($cliente);
    $sucursal = ControladorSucursal::obtenerSucursales()[$_REQUEST["sucursal"]];
    $compra->setSucursal($sucursal);
    $compra->setEnvioDomicilio($_REQUEST["domicilio"]);
    $compra->setFacturar($_REQUEST["factura"]);
    $compra->setFecha(date('Y-m-d'));
    $cantidades = $_REQUEST["cantidad"];
    $herramientas = $_REQUEST["herramientas"];
    $herramientaSelect = array();
    $cantidadesArray = array();
    $ID_Herramientas = array();
    $herramientasCompradas = new HerramientaComprada();
    $herramientasDB = ControladorHerramienta::obtenerHerramientasSinCantidad();
    $actual = "";
    //Obtenemos posiciones selecionadas
    for ($i = 0; $i < strlen($herramientas); $i++) {
        if ($herramientas[$i] == '|') {
            $herramientaSelect[] = $actual;
            $actual = "";
        } else {
            if ($herramientas[$i] == '*') {