[PHP] file_exists nao funciona [12% insane]

PHP devia ser banido?

  • Sim

    Votes: 5 27,8%
  • Nao

    Votes: 13 72,2%

  • Total voters
    18
vou postar a minha linha 99 e 100:
Código:
echo $p_modifFacturas . $FichFactModif[$i];
    $todosFichModif=array_merge($todosFichModif, file($p_modifFacturas . $FichFactModif[$i]));    //funcao file retorna um vector com todas as linhas existentes no ficheiro
o echo devolve:
C:\Programas\sugarcrm-4.5.1e\htdocs\sugarcrm\Filtros_crm_int\dados\FACTURAS_CHG_20071213_13.12.06.txt

edit: na palavra facturas , no nome di ficheiro, aparece um espaço, mas ele nao existe no meu post
 
Última edição:
modificando um pouco o meu codigo com um if, continua a dar o mesmo erro:
Código:
    if ($FichFactModif[$i]!='')
        {
        echo $p_modifFacturas . $FichFactModif[$i];
        $todosFichModif=array_merge($todosFichModif, file($p_modifFacturas . $FichFactModif[$i]));    //funcao file retorna um vector com todas as linhas existentes no ficheiro
        }
    }
 
E assim, resulta?
Código:
$todosFichModif=array_merge($todosFichModif, file("C:\Programas\sugarcrm-4.5.1e\htdocs\sugarcrm\Filtros_crm_int\dados\FACTURAS_CHG_20071213_13.12.06.txt"));
 
hardcoded o nome do ficheiro, nao existe nenhuma entrada no log, por isso, sim resulta!
Mas entao alguma coisa me esta a escapar aqui!
Mesmo assim, continuo com o mesmo problema no 1º post.
hhhummmm estranho... ... ...
 
same error dude!mas ja descobri o que se passa: fazendo var_dump ao $FichFactModif verifico que a posição 0 do vector nao existe. Só tenho que verificar as keys existentes do vector. ja agora, como faço isto ? Será que pode ser qualquer coisa do genero foreach (array key)...?

mesmo assim verifica-se o meu 1º post... :p
 
Pode ser qualquer coisa assim:
Código:
<?php
$arr = array(
    0 => "",
    1 => "file_1",
    2 => "file_2",
    3 => "",
);
foreach ($arr as $chave => $valor) {
    if ( $valor ) echo "$arr[$chave]<br />";
}
?>
 
entao no meu caso fica assim (só pra confirmar...):
Código:
foreach ($FichFactModif as $chave => $valor)

    {    echo $p_modifFacturas . $FichFactModif[$chave];
        $todosFichModif=array_merge($todosFichModif, file($p_modifFacturas . $FichFactModif[$chave]));    //funcao file retorna um vector com todas as linhas existentes no ficheiro
    
    }
certo?

E em relação ao 1º post, alguma ideia?

Obrigado slack!
 
Seria algo assim:
Código:
<?php

$p_modifFacturas = 'c:\\path\\to\\dir\\';
$todosFichModif = array();

$FichFactModif = array(
    '',
    'ficheiro_1',
    'ficheiro_2',
    '',
    'ficheiro_3'
);

foreach ($FichFactModif as $ficheiro) {
    if ($ficheiro) {

        $temp_ficheiro = "$p_modifFacturas$ficheiro";

        if (file_exists($temp_ficheiro)) {
            array_push($todosFichModif, file($temp_ficheiro));
        }
    }
}

?>
 
Última edição:
assim o array_push nao funciona, porque ainda nao foi inicializado como array a variavel $todosFichModif:
Código:
foreach ($FichFactModif as $ficheiro) {
    if ($ficheiro) {

        $temp_ficheiro = "$p_modifFacturas$ficheiro";

        if (file_exists($temp_ficheiro)) {
            $todosFichModif[] =array_merge($todosFichModif, file($temp_ficheiro));
        }
    }
}
 
Agora tenho erros em catadupa!:

[Fri Dec 28 12:11:39 2007] [error] [client 127.0.0.1] PHP Warning: basename() expects parameter 1 to be string, array given in C:\\Programas\\sugarcrm-4.5.1e\\htdocs\\sugarcrm\\Filtros_crm_int\\sync\\importar_facturas.php on line 126

Código:
$nTotalFichModif = count($todosFichModif);
for ($i=0; $i<=$nTotalFichModif; $i++)
{
/*linha126*/    $todosFichModif[$i]= basename($todosFichModif[$i]);                                            //obter apenas o nome do ficheiro
}
mas fazendo var_dump ao $todosFichModif, está todo preenchido com o conteudo do vector.
tou a ficar louco com o php!!! AHHHH!

EDIT:Tava a ser nabo! O vector tava a devolver um outro vector, esse sim, com os valores que preciso. assim sendo o meu codigo actual é :

Código:
foreach ($FichFactModif as $ficheiro) {
    if ($ficheiro) {

        $temp_ficheiro = $p_modifFacturas . $ficheiro;

        if (file_exists($temp_ficheiro)) {
        $todosFichModif=array_merge($todosFichModif, file($temp_ficheiro));
             //array_push($todosFichModif, file($temp_ficheiro));
        }
    }
}

var_dump ($todosFichModif);

assim devolve o conteudo de n ficheiros num vector unidimensional.

mesmo assim, persiste o erro do 1ºpost.
 
Última edição:
tou a ficar louco com o php!!! AHHHH!
hehehehehehehe... eu desisti do PHP 'long time ago'.

Isto sou eu a adivinhar, porque não sei o que queres fazer, não conheço a estrutura de dados nem o código para trás e para a frente... mas parece-me que tens de fazer mais um ciclo dentro do $todosFichModif[$i].
 
hehehehehehehe... eu desisti do PHP 'long time ago'.
O meu cerebro tem como linguagem nativa Visual Basic (nem o portugues entra lá) :007:. eu nunca decidi meter-me no php (quanto mais desistir), sou obrigado desenvolver com esta pseudo-linguagem >(. O meu grito do avatar é so sobre o php, o computador nao tem culpa nenhuma, tadinho! lolol

Isto sou eu a adivinhar, porque não sei o que queres fazer, não conheço a estrutura de dados nem o código para trás e para a frente... mas parece-me que tens de fazer mais um ciclo dentro do $todosFichModif[$i].
solved
assim ja nao tenho que fazer o array_merge.
 
Última edição:
Mesmo assim, continuo com o meu problema por resolver (post n.º 1)
Obrigado slack
Ajudem-me!!

Votar é um dever civico!
 
Última edição:
nao, php pura e simplesmente nao é uma linguagem produtiva, ou seja, o tempo que eu demoro a debugar pequenos erros é muitas vezes superior ao tempo de desenvolvimento.
Por isso, a votação nao é parva, quero saber se o problema e meu ou se é da linguagem.
Obrigado pelo comentario

Votem!
 
Back
Topo