Tienes varios errores por ejemplo:
    
Código PHP:
Ver original//Este for sobra
for ($i=0;$i<count($token_campos_end);$i++)  {}
  
    
Otra cosa estás usando mal los bucle for, en cada vuelta tienen que calcular el total de elementos, es preferible que los calcules en otra variable o por fuera. 
Para agregar esa información a un array haces esto:    
Código PHP:
Ver original$arr[$token_campos_end[$h]][] = $explode_sub_values[$h];
  
Un mini ejemplo, aclaro que puede que tenga errores:    
Código PHP:
Ver originalfunction lector() {
    
    $str = 'nombre|apellidos|telefono^miguel¬gonzalez¬2521251~miguel2¬gonzalez2¬252125111111';
    $file_read = $str;
    
    $token_campos = explode("^", $file_read);     $token_campos_end = explode("|", $token_campos[0]);     $explode_values = explode("~", $token_campos[1]);     $total_values = count($explode_values);     
    for ($x = 0; $x < $total_values; $x++) {
        $explode_sub_values = explode("¬", $explode_values[$x]);         $total_sub_values = count($explode_sub_values);         
        for ($h = 0; $h < $total_sub_values; $h++) {
            $arr[$token_campos_end[$h]][] = $explode_sub_values[$h];
        }
    
    }
}
  
Saludos.