Pesquisar na Comunidade
Mostrando resultados para as tags ''bidimensional''.
Encontrado 1 registro
-
Dados txt - Array bidimansional - Agrupamento de dados por registro
uma questão postou Johnny1965 PHP
Minha estrutura do arquivo TXT, é 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 (ver 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 a seguir mas, após muita pesquisa e modificações, não consegui agrupar os sub indices: Juntamente , necessito de uma rotina para transferir os dados do array para variaveis e, posteriormente, para o BD do mysql. Se alguém puder me dar uma luz, agradeço. <?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>"; }- 1 resposta
-
- array
- bidimensional
-
(e %d mais)
Tags: