-
Similar Content
-
By kania
Tenho a seguinte situação.
Recebo vários JSONs podendo ou não ser multidimensional, preciso atualizar uma determinada chave deste JSON, o problema é que algumas chaves podem ser duplicadas, bem como seus respectivos valores. Como estou tentando criar uma função genérica para navegar em qualquer JSON e modificar a chave em si, com estas duplicidades de chaves, estou tendo dificuldades em dizer ao código qual é chave que devo alterar.
Arquivo JSON Exemplo
{ "CREDITOR": { "TAX": { "TAC": 0.7 }, "ENABLE": "true", "PRODUCTION": { "email": "email@dominio.com", "senha": "12457895", "BASE_URL": "https://domino.com" }, "HOMOLOGATION": { "email": "email@dominio.com", "senha": "12457895", "BASE_URL": "https://domino.com" }, "TARGET_VALUES": 5000000 } }
Converto o JSON para array
$json = json_decode($json_string, true);
Função que criei até aqui
/** * Encontra a chave correspondente dentro do JSON * * @param array $jsonArray - JSON a ser verificado * @param string $keyFather - chave de entrada * @param string $keyUpdate - chave que modificar * @param string $valueUpdate - novo valor da chave * @return string * */ public static function searchKeyJson(array $jsonArray, string $keyFather, string $keyUpdate = null, $valueUpdate = null) { foreach ($jsonArray as $key => $value) { if ($key == $keyFather && $keyUpdate == null) { $jsonArray[$key] = $valueUpdate; return $jsonArray; } if ($key == $keyFather && $keyUpdate != null) { $jsonArray[$keyFather][$keyUpdate] = $valueUpdate; return $jsonArray; } if (is_array($value)) { if (($result = self::searchKeyJson($value, $keyFather, $keyUpdate, $valueUpdate)) !== false) { if ($keyUpdate == null) { return $result; } else { return $result; } } } } return false; }
Até modifico o valor, mais no final para salvar, ele não monta o JSON como original, ele caba ignorando a chave inicial no JSON de exmeplo "CREDITOR": {}
Retorno da função (notem que esta forma do padrão da original)
=> [ "TAX" => [ "TAC" => 0.7, ], "ENABLE" => "true", "PRODUCTION" => [ "email" => "teste", "senha" => "12457895", "BASE_URL" => "https://domino.com", ], "HOMOLOGATION" => [ "email" => "email@dominio.com", "senha" => "12457895", "BASE_URL" => "https://domino.com", ], "TARGET_VALUES" => 5000000, ]
Se eu percorrer o array e tentar modificar a chave em questão, ele muda todas as as chaves que tiverem no JSON porque tem duplicidade.
Como posso resolver isto com uma função global que sirva para qualquer padrão de JSON que eu tiver?
-
By TheLord23
ESTOU COMEÇANDO AGORA NA PROGRAMAÇÃO COM VISUALG E TERIA QUE COLOCAR ESTE CODIGO EM UM LAÇO DE REPETIÇÃO.
POREM NÃO ESTOU CONSEGUINDO PODERIAM ME AJUDAR ?
SÓ PENSANDO QUE O USUÁRIO IRA DIGITAR O TAMANHO DO VETOR, APOS ISSO CADA OPÇÃO QUE ELE ESCOLHER E ELA SER EXECUTADA DE FORMA CORRETA ELE VOLTARA PARA O MEUNU PRINCIPAL DAS OPÇÕES ATE QUE ELE SELECIONE A OPÇÃO "F"
POREM TENTEI ESCREVELO USANDO ENQUANTO MAS ACABOU QUE EU NÃO CONSIGO PREVINIR OS ERROS DO USUÁRIO QUANDO ELE COLOCA AS INFORMAÇÕES
TIPO:
-ARMAZENAR UM NÚMERO NO VETOR E ESSE NÚMERO NÃO SER SOBRESCREVIDO ATE QUE O PROGRAMA SEJA ENCERRADO
-SE ELE DIGITAR PRA BUSCAR OU INSERIR O NÚMERO ZERO O PROGRAMA INFORMAR QUE O VALOR É INVÁLIDO
TENTEI USAR PROCEDIMENTOS E FUNÇÕES MAS OS ERROS CONTINUARAM.
Algoritmo "DESAFIO"
Var
AUX,CONTADOR,BUSCAR:INTEIRO
POSICAO,AUX_TEMP:INTEIRO
OPCAO:CARACTERE
RESULT_BUSCA: LOGICO
SOMA_VET:REAL
NUMERO:VETOR[1..500]DE INTEIRO
Inicio
ESCREVAL("*********************************")
ESCREVAL("* CADASTRO DE VETORES - DESAFIO *")
ESCREVAL("*********************************")
ESCREVA("DIGITE O TAMANHO DO VETOR A SER CADASTRADO: ")
LEIA(AUX)
NUMERO[AUX] <- AUX
ESCREVAL("A - Cadastrar um novo número;")
ESCREVAL("B - Buscar um número")
ESCREVAL("C - Excluir um número;")
ESCREVAL("D - Listar os números cadastrados;")
ESCREVAL("E - Exibir a soma dos números do vetor;")
ESCREVAL("F - Sair do sistema.")
LEIA(OPCAO)
OPCAO <- MAIUSC(OPCAO)
ESCOLHA OPCAO
CASO "A"
PARA CONTADOR DE 1 ATE NUMERO[AUX] FACA
ESCREVA("DIGITE O VALOR QUE SERÁ ARMAZENADO NA",CONTADOR,"ª POSIÇÃO DO VETOR: ")
LEIA(NUMERO[CONTADOR])
FIMPARA
CASO "B"
ESCREVA("QUAL NÚMERO DESEJA ENCONTRAR: ")
LEIA(BUSCAR)
PARA CONTADOR DE 1 ATE NUMERO[AUX] FACA
SE NUMERO[CONTADOR] = BUSCAR ENTAO
RESULT_BUSCA <- VERDADEIRO
POSICAO <- CONTADOR
FIMSE
FIMPARA
PARA CONTADOR DE 1 ATE NUMERO[AUX] FACA
ESCREVAL(NUMERO[CONTADOR])
FIMPARA
ESCREVAL("")
ESCREVAL("---------")
SE RESULT_BUSCA = VERDADEIRO ENTAO
ESCREVAL("O NÚMERO",BUSCAR,"FOI ENCONTRADO E ESTA NA POSIÇÃO",POSICAO)
SENAO
ESCREVAL("O NÚMERO NÃO FOI ENCONTRADO !")
FIMSE
CASO "C"
escreval("QUAL NÚMERO DESEJA EXCLUIR DO VETOR: ")
leia(BUSCAR)
SE NUMERO[CONTADOR] = BUSCAR ENTAO
NUMERO[CONTADOR] <- 0
ESCREVAL("O NÚMERO",BUSCAR,"NA POSIÇÃO",POSICAO,"DO VETOR FOI EXCLUIDO !")
FIMSE
PARA CONTADOR DE 1 ATE NUMERO[AUX]
PARA AUX DE CONTADOR + 1 ATE AUX FACA
SE NUMERO[AUX] > NUMERO[CONTADOR]
AUX_TEMP <- NUMERO[AUX]
NUMERO[AUX] <- NUMERO[CONTADOR]
NUMERO[CONTADOR] <- AUX_TEMP
FIMPARA
FIMPARA
ESCREVA("VALROES DO VETOR: ")
PARA CONTADOR DE 1 ATE NUMERO[AUX] FACA
ESCREVAL(NUMERO[CONTADOR])
FIMPARA
CASO "D"
ESCREVA("VALORES DO VETOR: ")
PARA CONTADOR DE 1 ATE NUMERO[AUX] FACA
ESCREVAL(NUMERO[CONTADOR])
FIMPARA
CASO "E"
PARA CONTADOR DE 1 ATE NUMERO[AUX] FACA
SOMA_VET <- SOMA_VET + NUMERO[CONTADOR]]
FIMPARA
ESCREVAL("")
ESCREVA("A SOMA DO VETOR É:",SOMA_VET)
CASO "F"
ESCREVAL("ENCERRANDO SISTEMA...")
OUTROCASO
ESCREVAL("OPÇÃO INVÁLIDA !")
FIMESCOLHA
Fimalgoritmo
-
By Jack Oliveira
Ola pessoal estou com uma dificuldade ou melhor com erro ao fazer a leitura do arquivo por ajax
Pelo meus calculos esta certo a forma que fiz, porem nao me mostra o resultado
Espero que possam dar uma ideia do que seria e de como resolver
este é o erro que retorna
<br /> <b>Notice</b>: Undefined index: length in <b>C:\Host\htdocs\CMS-DELIVERY\CPANELUSER\ajax-list.php</b> on line <b>31</b><br /> <br /> <b>Notice</b>: Undefined index: start in <b>C:\Host\htdocs\CMS-DELIVERY\CPANELUSER\ajax-list.php</b> on line <b>32</b><br /> <br /> <b>Notice</b>: Undefined index: length in <b>C:\Host\htdocs\CMS-DELIVERY\CPANELUSER\ajax-list.php</b> on line <b>32</b><br /> You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1
No arquivo php esta assim
<?php session_start(); header('Content-Type: application/json'); require('./database/config.php'); require('./database/config.database.php'); require_once('./includes/funcoes.php'); //require('ssp.class.php'); $Campos = "'DL.id, DL.titulo, DL.telefone, DC.titulo as CityTitulo'"; $column = array("DL.id", "DL.titulo", "DC.titulo", "DL.destaque"); $queryIJ = 'directory_listing DL inner join directory_cidades DC on(DL.cidade = DC.titulo)'; $query = "WHERE DC.status=1 AND DL.status=1 "; if (isset($_POST["is_category"])) { $query = "DL.cidade = '" . $_POST["is_category"] . "' AND "; } if (isset($_POST["search"]["value"])) { $query = '(DL.id LIKE "%' . $_POST["search"]["value"] . '%" OR DL.titulo LIKE "%' . $_POST["search"]["value"] . '%" OR DL.telefone LIKE "%' . $_POST["search"]["value"] . '%") '; } if (isset($_POST["order"])) { $query = 'ORDER BY ' . $column[$_POST['order']['0']['column']] . ' ' . $_POST['order']['0']['dir'] . ' '; } else { $query = 'ORDER BY DL.id DESC '; } $query1 = ''; if ($_POST["length"] != 1) { $query1 = 'LIMIT ' . $_POST["start"]. ', ' . $_POST["length"]; } define('QUERYIJ', $queryIJ); define('CAMPOS', $Campos); define('QUERY', $query); define('QUERY1', $query1); $number_filter_row = DBCount(QUERYIJ,CAMPOS,QUERY); function ListarDirectoryEmpresaCidade($Q1 = QUERYIJ, $Camp = CAMPOS, $Query2 = QUERY, $Query3 = QUERY1) { $QueryInnerJoin = DBRead($Q1,$Camp, $Query2 .$Query3); return groupByEmpresaByCidade($QueryInnerJoin,'CityTitulo'); } function groupByEmpresaByCidade($array, $key) { $return = array(); foreach($array as $val) { $return[$val[$key]][] = $val; } return $return; } $data = array(); $ListarDirectoryEmpresa = ListarDirectoryEmpresaCidade(); foreach ($ListarDirectoryEmpresa as $ListarCidade) { //$ListarCidade[0]['CityTitulo'] foreach ($ListarCidade as $ListarDirectory) { //$ListarDirectory['titulo'] $sub_array = array(); $sub_array[] = $ListarDirectory["id"]; $sub_array[] = $ListarDirectory["titulo"]; $sub_array[] = $ListarCidade[0]['CityTitulo']; $sub_array[] = $ListarDirectory["telefone"]; $data[] = $sub_array; } } $result = DBCount('directory_listing','*'); $output = array( "draw" => intval($_POST["draw"]), "recordsTotal" => $result, "recordsFiltered" => $number_filter_row, "data" => $data ); echo json_encode($output); ?> Ja no html esta assim
<div class="table-responsive"> <table id="list_data" class="table table-bordered table-striped"> <thead> <tr> <th>Id.</th> <th>Titulo</th> <th> <select name="directory_cidades" id="directory_cidades" class="form-control"> <option value="">Buscar Cidade</option> <?php $Query = DBRead('directory_cidades','*',"ORDER BY titulo ASC"); foreach($Query as $rows) { echo '<option value="' . $rows["titulo"] . '">' . $rows["titulo"] . '</option>'; } ?> </select> </th> <th>Telefone</th> </tr> </thead> </table> </div> No javascript esta assim
<script type="text/javascript" language="javascript"> $(document).ready(function() { load_data(); function load_data(is_category) { var dataTable = $('#list_data').DataTable({ "processing": true, "serverSide": true, "order": [], "ajax": { url: "ajax-list.php", type: "POST", data: { is_category: is_category } }, "columnDefs": [{ "targets": [2], "orderable": false, }, ], }); } $(document).on('change', '#directory_cidades', function() { var directory_cidades = $(this).val(); $('#list_data').DataTable().destroy(); if (directory_cidades != '') { load_data(directory_cidades); } else { load_data(); } }); }); </script> Sei que o problema não esta no html e nem no javacript postei eles para melhor entender
-
By mateus.andriollo
Tenho uma tabela evento com campo participantes tipo Json, valores nela são armazenados desta forma
[1,2,44] Sendo eles códigos de usuários.
Em uma select gostaria de consultar o evento e retornar os nomes dos participantes, porém consultando em uma tabela usuário.
Pensei em fazer inner, depois criei uma subselect fazendo consulta com IN mas só encontra o primeiro usuário
-
By thiago_tw
eu to com uma tarefa que preciso de ajuda, já tentei alguns algoritmos que achei por aqui mas nunca dá certo, mandei a imagem do que é para ser feito, agradecido se me ajudarem
-