Ir para conteúdo

JohnnyBegood

Members
  • Total de itens

    10
  • Registro em

  • Última visita

Reputação

0 Comum

Sobre JohnnyBegood

  • Data de Nascimento 10/02/1965

Informações Pessoais

  • Sexo
    Masculino
  • Localização
    Blumenau-SC
  1. JohnnyBegood

    Warning: Undefined offset: 3

    Este é o código Guilherme, while(!feof($file)){ $row=trim(fgets($file,1024)); if(preg_match('/^\(Cd\)\s(.+)/',$row,$match)){ // capture Cd numbers ++$i; // increment outer_index $j=-1; // reset inner_index $id=$match[1]; // store cd value //$concat=true; $row_previous=false; $row_ob=false; }elseif(preg_match('/^(\(..\)\s.*)/',$row,$match)){ // capture Cd data //if(isset($match)?$j:$j); ++$j; // this is a new innerarray element, increment its index $cd[$i][$id][$j]=$match[1]; // push element into array If (substr($row, 0, 5) == '(Co) ') { $row_previous=true; } }elseif(isset($id)){ If (($row_previous == true)&& ($row_ob !== true)){ ++$j; //increment its index to insert variable value created for the additional lines $row="(Ob) ". (trim($row)); //create pre value variable $row_ob=true; $cd[$i][$id][$j].="$row "; // concatenate to last element to new }else{ $cd[$i][$id][$j].=" $row"; // concatenate to last element $row_previous=false; $row_ob=false; } } }
  2. JohnnyBegood

    Warning: Undefined offset: 3

    Olá Guilherme, eu executei var_dump em todos os array e, agora, descobri que o array vazio é o $match[1]. Saberia me ajudar a contornar o erro? O array tá cheio mas quando chega no final do arquivo (arquivo txt), ele fica com valor 0 - array (size=0) empty Esse é o código anterior ao que citei antes: }elseif(preg_match('/^(\(..\)\s.*)/',$row,$match)){ // capture Cd data ++$j; // this is a new innerarray element, increment its index $cd[$i][$id][$j]=$match[1]; // push element into array //$concat=(strpos($match[1],'(Co)')!==0?true:false); If (substr($row, 0, 5) == '(Co) ') { $row_previous=true; }
  3. JohnnyBegood

    Warning: Undefined offset: 3

    Pessoal, Tô com problema nesse código: "Warning: Undefined offset: 3 and Undefined offset: 5, nesta linha (36): $cd [$ i] [$ id] [$ j]. =" $ Row "; Já tentei com isset mas não dei jeito. Sei que este erro pode ocorrer com array vazio mas o array tem dados. O call stack do PHP tá apontando pro $j : $j =G:\XAMPP\htdocs\guardiao\inventario\Stackoverflow_1.php:36:int 3 $match = G:\XAMPP\htdocs\guardiao\inventario\Stackoverflow_1.php:36: array (size=0) - empty Alguém consegue me ajudar? }elseif(isset($id)){ // ignore all file header content If (($row_previous == true)and ($row_ob !== true)){ ++$j; //increment its index to insert variable value created for the additional lines $row="(Ob) ". (trim($row)); //create pre value variable $row_ob=true; $cd[$i][$id][$j].="$row "; // concatenate to last element to new -linha (36) }else{ $cd[$i][$id][$j].=" $row"; // concatenate to last element } }
  4. JohnnyBegood

    [Resolvido] Leitura TXT com agrupamento

    Moderadores, Este tópico foi marcado como Resolvido, porém continuo com problemas na resolução do código. Gostaria que fosse reaberto. Agradeço a atenção. Inicialmente postei uma estrutura de arquivo TXT, para exemplificar a ordenação recebida e recebi a contribuição do EdCesar, em especial, que auxiliou com um código funcional para tal estrutura. Porém, após implementar com a estrutura real, estou tendo inúmeros problemas: Minha estrutura do arquivo TXT, real, é esta: Preciso ler, linha alinha e agrupar pelo (Cd), que é o único indice de cada registro. Assim, esse (Cd) refere-se a cada novo registro, podendo conter sub indices diversos - (11), (22), (Co), etc. Estes sub indices podem conter uma linha adicional (exemplo do (Co) , no primeiro registro, que deve concatenar as linhas contendo "para gabinete" e "para armario."). inventario.txt //inicio No 0012 de 31/01/2016 No 0012 de 31/01/2016 (Cd) 12345 (11) Cod1-023 (22) 22/12/1945 (Co) travamento de portas para gabinete para armario. (Cd) 23456 (11) Cod1-055 (21) 01/01/2005 (22) gaveteiro ferro ,madeira ,aluminio (Cd) 78920 (22) Cod1-077 (54) 22/02/1975 (Co) clipe aluminio ou ferro (74) anodizado (Cd) 0002525 (Di) Cod4-07100 (11) 22/02/2017 (22) camisa vermelha verde (54) botoes amarelos (Co) manga ,abacate ,cereja //fim Implementei a rotina do EdCesar mas, após muita pesquisa e modificações, não consegui agrupar os sub indices: Juntamente , uma rotina para transferir os dados do array para variaveis e, posteriormente para o BD do mysql. <?php $cd = []; $grupo = []; $contador = 0; $arquivo = fopen('inventario.txt', 'r'); while (!feof($arquivo)) { $linha = trim(fgets($arquivo, 1024)); //$linha = trim($linha); if (substr($linha, 0, 4) == '(Cd)') { $contador = 0; if (!empty($grupo)) { $cd[$id] = $grupo; $grupo = []; $contador = 0; } $id = substr($linha, 5, strlen($linha)-5 ); $cd[$id][] = $linha; } else { if (substr($linha, 0, 4) !== '(11)') { if (isset($grupo[$contador-1])) { $grupo[$contador -1] .= ' ' . $linha; $contador--; } } else { $grupo[] = $linha; } $contador++; } } $cd[$id] = $grupo; fclose($arquivo); echo '<pre>'; print_r($cd); exit; //------------------------- //Rotina para transferir os dados do array para variaveis $keys = array_keys($cd); for($i = 0; $i < count($cd); $i++) { echo $keys[$i] . "<br>"; foreach($cd[$keys[$i]] as $key => $value) { echo $key . " : " . $value . "<br>"; } echo "<br>"; }
  5. JohnnyBegood

    [Resolvido] Leitura TXT com agrupamento

    Resolvido EdCesar. Agradeço imensamente sua ajuda. Aproveitando, você desenvolve para web e mobile? Caso precise de seus serviços, como você cobra? Estou desenvolvendo um sistema diferenciado, contendo uma primeira fase, de importação de dados disponibilizados em TXT e XML para um BD em mysql. Esta primeira fase estou desenvolvendo sozinho mas a segunda fase depende de sistema de comercialização de serviços ONLine e aí precisarei de um profissional pra implementar. Poderia me passar uma prévia de seu curriculum?
  6. JohnnyBegood

    [Resolvido] Leitura TXT com agrupamento

    EdCesar, Excelente algoritmo. Organizou da forma que necessito. Porém, aqui pra mim, retorna erro : Notice: Undefined offset: -1 in G:\XAMPP\htdocs\guardiao\Lixao\inventario\inventario_2.php on line 25 Notice: Undefined variable: id in G:\XAMPP\htdocs\guardiao\Lixao\inventario\inventario_2.php on line 15 Me parece ser no array negativo: [-1] => No 0012 de 31/01/2016 ------------------------------------- No caso dos índices conterem nomes diferentes de (Cod, basta eu inserir no agrupamento condições diversas, certo? } else if (substr($linha, 0, 4) != '(Cod') { $grupo[$contador -1] .= ' ' . $linha; }else{ if (substr($linha, 0, 4) != '(22)') { $grupo[$contador -1] .= ' ' . $linha; }else { $grupo[] = $linha; }
  7. JohnnyBegood

    [Resolvido] Leitura TXT com agrupamento

  8. JohnnyBegood

    [Resolvido] Leitura TXT com agrupamento

    Gabriel, Não consegui implementar com suas dicas e Preg_match. Seu código agrupa pelo "parenteses" e não pelo "(Cod0)", que é o que preciso. Tentei algo assim: if (preg_match("/^\(([Cod0])\)/" , $line , $matches)) ...mas não deu certo. Outro problema é concatenar a linha seguinte "gabinete ou de armario. " com a anterior, contendo o " (Cod3) travamento de portas". Lembrando que o único indice que tem valor inalterado é (Cod0). Os demais (Cod1), (Cod2)...podem estar nominados como (22), (rar)...sempre dentro de "parenteses". Tentei utilizar while com foreach mas nao consegui, igualmente. Se puder me dar uma luz, agradeço...
  9. JohnnyBegood

    [Resolvido] Leitura TXT com agrupamento

    Obrigado Gabriel, Vou implementar suas dicas e ver como fica.
  10. JohnnyBegood

    [Resolvido] Leitura TXT com agrupamento

    Pessoal, tenho um arquivo txt com o seguinte layout: No 0012 de 31/01/2016 (Cod0) 12345 (Cod1) Cod1-023 (Cod2) 22/12/1945 (Cod3) travamento de portas gabinete ou de armario. (Cod0) 23456 (Cod1) Cod1-055 (Cod2) 01/01/2005 (Cod3) gaveteiro (Cod0) 78920 (Cod1) Cod1-077 (Cod2) 22/02/1975 (Cod3) clipe aluminio ou ferro (Cod4) anodizado --------------------------------- Preciso ler, linha alinha e agrupar pelo Cod0. Assim, esse Cod0 refere-se a cada novo registro, podendo conter Cod1, Cod2, Cod3 e por aí vai... Outro problema é que os Cod1, Cod2, Cod3 ,... podem conter uma linha adicional (exemplo do Cod 3, no primeiro registro). Tenho esse código implementado com base num exemplo aqui do Fórum, mas não consegui implementar o agrupamento e adição dessa eventual linha extra. <?php $filename = fopen("inventario.txt","r"); $grupo = array(); while( !feof($filename) ){ $line = trim(fgets($filename)); $codigo = substr($line,0,6); if($codigo == '(Cod0)'){ $grupo[] = array( 'Cod:' => substr($line,4,40).'<br>', 'Dados' => array() ); continue; } } fclose($filename); print_r($grupo);
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.