Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Braulio Holtz

Valor de uma chave PHP/Json

Recommended Posts

Bem, estou com um problema que parece simples, mas estou procurando e procurando e não estou achando, não sei se existe um jeito mais fácil

Eu queria que ao inves de dar um loop nos resultados, retornasse um valor pelo get usando JSON, meu arquivo JSON está assim

{"carros": [ { "cod": "GW001N", "fabricante":"Volkswagen", "model":"Gol", "sit":"Novo", "valor": "35000", "benef_prin":"Modernidade" },
{ "cod": "GW001U", "fabricante":"Volkswagen", "model":"Gol", "sit":"Usado", "valor": "20000", "benef_prin":"Resistência" },
{ "cod": "FP001N", "fabricante":"Fiat", "model":"Palio", "sit":"Novo", "valor": "20000", "benef_prin":"Praticidade" },
{ "cod": "FP001U", "fabricante":"Fiat", "model":"Palio", "sit":"Usado", "valor": "10000", "benef_prin":"Economia" }
]
}
Então,se no get tiver chamando cod=FP001U me retornaria as informações do carro com o codigo FP001U.
Estou dando uma estudada em JSON, isso me ajudaria muito, estou procurando os jeitos mais simples de fazer e pelo que vi com JSON fica simples de escrever os códigos

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, eu estou usando o json_decode, no caso, como vira a array eu usaria a função array_search? Eu só estava mexendo com mysql, agora estou quebrando um pouco a cabeça para fazer algo diferente

Compartilhar este post


Link para o post
Compartilhar em outros sites
Ficaria assim?
$json = file_get_contents('carros.js');
$data=json_decode($json, true);
$data= array_search('FP001U', $data["carros"]);
echo $data["cod"];

 

O problema que ele não quer exibir, devo estar fazendo alguma coisa errada

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos por partes, lembre q caracteres especiais devem ser convertido para utf8, use utf8_encode.

 

 

"benef_prin":"Resistência"},

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

vamos por partes, lembre q caracteres especiais devem ser convertido para utf8, use utf8_encode.

 

 

"benef_prin":"Resistência"},

 

É, usando o UTF8 pode ser uma alternativa, mas no caso de procurar pelo COD não tem caracteres especiais, isso interferia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu tava testando aqui.... nem convertia o json em array.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu tava testando aqui.... nem convertia o json em array.

Não entendi, bem, dando um loop com foreach aparece normalmente

Minhas páginas estão com codificação UTF8 mesmo

o campo que quero fazer a procura não tem caracteres especiais, só vai ser letras e números

Compartilhar este post


Link para o post
Compartilhar em outros sites


<?php

$json = file_get_contents('carros.js');

$data=json_decode($json);

settype($data,"array");

$new_data = array();

foreach ($data as $key=>$array){

foreach ($array as $nkey=>$narray){

settype($data[$key][$nkey],"array");

settype($narray,"array");

$new_data[$key][$data[$key][$nkey]['cod']] = $narray;

}

}

$codigo = 'FP001U';

if (isset($new_data["carros"][$codigo])){

foreach ($new_data["carros"][$codigo] as $key=>$valor){

echo $key."=".$valor.'<br>';

}

}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

<?php
$json = file_get_contents('carros.js'); 
$data=json_decode($json); 
settype($data,"array");
$new_data = array();
foreach ($data as $key=>$array){
	foreach ($array as $nkey=>$narray){
		settype($data[$key][$nkey],"array");
		settype($narray,"array");
		$new_data[$key][$data[$key][$nkey]['cod']] = $narray;
	}
}
$codigo = 'FP001U';
if (isset($new_data["carros"][$codigo])){
	foreach ($new_data["carros"][$codigo] as $key=>$valor){
		echo $key."=".$valor.'<br>';
	}
}
?>

Bem, ele faz o que quero, mas não tem algo mais simples, apenas um IF e os campos que já estão definidos?

Porque basicamente eu gostaria de personalizar bem, de tipo,você comprou tal carro da fabricante tal, etc

Tentei alterar para esse código, tirando o foreach e só dando o echo

if (isset($new_data["carros"][$codigo])){
   echo $new_data["carros"]["cod"];
}

Mas dai já da erro Notice: Undefined index: cod in

Compartilhar este post


Link para o post
Compartilhar em outros sites

essa parte que tem

 

$codigo = 'FP001U';
if (isset($new_data["carros"][$codigo])){
	foreach ($new_data["carros"][$codigo] as $key=>$valor){
		echo $key."=".$valor.'<br>';
	}
}

 

vc pode fazer apenas

 


 


$codigo = 'FP001U'; if (isset($new_data["carros"][$codigo])){      echo "Você comprou um ".$new_data["carros"][$codigo]['model']." no valor de "..$new_data["carros"][$codigo]['valor'];

}

 

ou seja tudo que vc precisa é do código do carro, e as informações do carro estarão sempre em

 

$new_data["carros"][$codigo]

 

ai vc coloca o 3 índice que deseja mostrar!

 

exemplo

 

echo $new_data["carros"][$codigo]['model'];

 

se é que intende oque digo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, ele faz o que quero, mas não tem algo mais simples, apenas um IF e os campos que já estão definidos?

Porque basicamente eu gostaria de personalizar bem, de tipo,você comprou tal carro da fabricante tal, etc

Tentei alterar para esse código, tirando o foreach e só dando o echo

if (isset($new_data["carros"][$codigo])){
   echo $new_data["carros"]["cod"];
}

Mas dai já da erro Notice: Undefined index: cod in

 

 

essa parte que tem

 

$codigo = 'FP001U';
if (isset($new_data["carros"][$codigo])){
	foreach ($new_data["carros"][$codigo] as $key=>$valor){
		echo $key."=".$valor.'<br>';
	}
}

 

vc pode fazer apenas

 


 


$codigo = 'FP001U'; if (isset($new_data["carros"][$codigo])){      echo "Você comprou um ".$new_data["carros"][$codigo]['model']." no valor de "..$new_data["carros"][$codigo]['valor'];

}

 

ou seja tudo que vc precisa é do código do carro, e as informações do carro estarão sempre em

 

$new_data["carros"][$codigo]

 

ai vc coloca o 3 índice que deseja mostrar!

 

exemplo

 

echo $new_data["carros"][$codigo]['model'];

 

se é que intende oque digo!

 

 

Verdade, rsrs, tem que colocar o campo que está buscando no segundo parametro e o terceiro a coluna que quer. Valeu cara, é isso mesmo, ficou massa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, até ai tudo bem, agora o que estou procurando é uma forma de manipular, meio que um pedido de carros, ao finalizar cadastrasse o registro num outro arquivo, pedidos.json.

Com MySQL sempre achei tranquilo para essas coisas, Como seria, um uso do json_encode? seria meio que ao contrário, ao inves de retornar, inserir

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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