Merge Results of an Array

Asked

Viewed 488 times

2

I have a PHP application that takes a Json file and creates a timed array:

city | quarter | city | complement | addressee | state

header('content-type: application/json; charset=utf-8');

$file = "data.json";
$info = file_get_contents($file);
$lendo = json_decode($info);
foreach($lendo->unidades as $campo){
    $result = array_unique($campo);
    print_r($result);
}

data json.

{
    "unidades": [{
    "bairro": "Ouro",
    "cidade": "São Mateus do Sul",
    "complemento": "" "",
    "endereco": "Rua XYZ ABADA, 26",
    "estado": "PR"
},
{
    "bairro": "Centro",
    "cidade": "Xinguara",
    "complemento": ""TESTE TESTE TESTE"",
    "endereco": "Rua ABC, 60",
    "estado": "PA"
},
{
    "bairro": "Prata",
    "cidade": "Wenceslau Braz",
    "complemento": "" ZENFORM "",
    "endereco": "Rua  HUEHUEHUE, 99",
    "estado": "PR"
  }]
}

I wonder if it is possible to join the Array Results by estado or by cidade as the example below

Array
 (
  [bairro] => Ouro
  [cidade] => São Mateus do Sul
  [complemento] => " "
  [endereco] => Rua XYZ ABADA, 26
  [estado] => PR

  [bairro] => Prata
  [cidade] => Wenceslau Braz
  [complemento] => " ZENFORM "
  [endereco] => Rua  HUEHUEHUE, 99
  [estado] => PR

  [bairro] => Bronze
  [cidade] => Wenceslau Braz
  [complemento] => " ALAMEDA "
  [endereco] => Rua  CHAVEZ, 99
  [estado] => PR

 )

Array
 (
  [bairro] => Centro
  [cidade] => Xinguara
  [complemento] => "TESTE TESTE TESTE"
  [endereco] => Rua ABC, 60
  [estado] => PA


  [bairro] => Caçapa
  [cidade] => 2 irmãos
  [complemento] => "TESTE TESTE TESTE"
  [endereco] => Rua EFG, 88
  [estado] => PA

 )
  • 1

    Can you put an example of your JSON? so we can better test the code.

  • I edited my answer with a correction and example.

1 answer

2

You can iterate this array from the file and within that popular loop/fill a new array.

$ordenada = array();
foreach($lendo->unidades as $campo){
    $ordenada[$campo->estado][] = $campo;
}

Example: http://ideone.com/DmSi0t

This way you will have a new array of arrays with this format:

array(2) {
  ["PR"]=>
  array(2) {
    [0]=>
    object(stdClass)#2 (5) {
      ["bairro"]=>
      string(4) "Ouro"
      ["cidade"]=>
      string(18) "São Mateus do Sul"
      ["complemento"]=>
      string(13) "" ""
      ["endereco"]=>
      string(17) "Rua XYZ ABADA, 26"
      ["estado"]=>
      string(2) "PR"
    }
    [1]=>
    object(stdClass)#4 (5) {
      ["bairro"]=>
      string(5) "Prata"
      ["cidade"]=>
      string(14) "Wenceslau Braz"
      ["complemento"]=>
      string(21) "" ZENFORM ""
      ["endereco"]=>
      string(18) "Rua  HUEHUEHUE, 99"
      ["estado"]=>
      string(2) "PR"
    }
  }
  ["PA"]=>
  array(1) {
    [0]=>
    object(stdClass)#3 (5) {
      ["bairro"]=>
      string(6) "Centro"
      ["cidade"]=>
      string(8) "Xinguara"
      ["complemento"]=>
      string(29) ""TESTE TESTE TESTE""
      ["endereco"]=>
      string(11) "Rua ABC, 60"
      ["estado"]=>
      string(2) "PA"
    }
  }
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.