Hola a todos! Me surgió un problema inesperado en este código. Resulta que en el momento que me ayudaron a resolver este tema (
AQUÍ MISMO) no me percaté de algo... fíjense en el id_categoría nro. 4... al tener solo 2 caractares, cuando hace la comparación para crear la relación ME DEVUELVE CERO 
 
 
Creo que el problema está en esta líena del código: 
$idcategoria=$categoria[substr($data[3],0,3)]; 
¿Puede ser? ¿Se puede corregir para que me tome si hay 2 o 3 caracteres para que lo realice igual?
Les muestro como serían las tablas y el código más abajo que uso:
tabla CATEGORIA 
Código:
 id_categoria 	desc_categoria 	cod_categoria
1               Abrazaderas     ABR
2               Garef 	        GAR
3               Antenas 	ANT
4               Carbones G.V.   GV
  tabla LINEAS 
Código:
 id_linea | desc_linea         | relacion | cod_linea
1        | Banda Mini         | 1        | ABR01
2        | Banda Standard     | 1        | ABR02
3        | Banda Reforzada    | 1        | ABR03
4 	 | Reguladores  A     | 2        | GAR01
5 	 | Reguladores  B     | 2        | GAR02
6        | Antenas A          | 3        | ANT01
7        | Antenas B          | 3        | ANT02
8        | Carbones A         | 0        | GV 01
9        | Carbones B         | 0        | GV 02
.......
   Código PHP:
    $row = 1;
$fp = fopen ('productos.csv','r'); 
 
$categoria=array();
$result=mysql_query("select * from categoria");
while($row=mysql_fetch_array($result)) $categoria[$row['cod_categoria']]=$row['id_categoria'];  
 
while ($data = fgetcsv ($fp, 1000, ";")) 
{ 
    $num = count ($data); 
    print " <br>"; 
    $row++; 
    
    echo "$row- ".$data[4].$data[3];
     
    foreach ($data as $pos=>$dato) { 
        $data[$pos] = trim($dato);
    } 
  
    if (!in_array($data[3],$ids)) {
       
   $ids[] = $data[3];
 
   $idcategoria=$categoria[substr($data[3],0,3)];  
 
   $insertar="INSERT INTO lineas (desc_linea,relacion,cod_linea) VALUES ('$data[4]','$idcategoria','$data[3]')"; 
    mysql_query($insertar);
    }
} 
fclose ($fp); 
    
  El máximo de caracteres que tiene que chequear son 3... más NO.
¿Se puede corregir para que me tome si hay 2 o 3 caracteres para que lo realice igual? 
Muchas gracias a todos y saludos.
Marx.