简体   繁体   中英

How to add value and key to associative array in php

I am trying to add two keys and values inside an associative array within a loop but I can't get it to work.

At the moment this is my code:

$bedrijven            = "
select
  cnt.id, cnt.title, cnt.introtext, cnt.ordering, cnt.state, f.item_id,
  max(case when f.field_id = 3 then f.value end) as plaats,
  max(case when f.field_id = 1 then f.value end) as straat
from snm_fields_values f
join snm_content cnt
on cnt.id = f.item_id
where cnt.state = 1
group by f.item_id
order by f.item_id, plaats, straat";
$bedrijvencon       = $conn->query($bedrijven);
$bedrijvenarray = [];
while($bedrijven    = $bedrijvencon->fetch_assoc()){
   array_push($bedrijvenarray, $bedrijven);
   $straatnaam = str_replace(' ', '+', $bedrijven['straat']);
   $bedrijflijst .= $bedrijven['plaats'].$straatnaam.'<br>';
   $getlatlong = file_get_contents("https://maps.googleapis.com/maps/api/geocode/json?address=".$bedrijven['plaats'].",".$straatnaam."&key=myapikey");
   $latlongarray = json_decode($getlatlong);
   $lat = '';
   $lng = '';
   foreach ($latlongarray->results as $key => $latlong){
    //  $latlonglijst .= $latlong->geometry->location->lat.'&nbsp;';
    //  $latlonglijst .= $latlong->geometry->location->lng.'<br>';
    $lat .= $latlong->geometry->location->lat;
    $lng .= $latlong->geometry->location->lng;
    // array_push($bedrijvenarray, $lat, $lng);
    $new_array = array('lat'=>''.$lat.'', 'lng'=>''.$lng.'');

   }
   $merged_array = array_merge($new_array,$bedrijvenarray);
}
$jsonobject = json_encode($bedrijvenarray);

echo '<pre>';
print_r($merged_array);
echo '</pre>';

This returns the following:

Array
(
    [lat] => 51.8214507
    [lng] => 4.2591759
    [0] => Array
        (
            [id] => 10
            [title] => P. Vis B.V.
            [introtext] => 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus aliquet interdum enim vel volutpat. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin ullamcorper neque a porttitor malesuada. Etiam pharetra eget nisl sit amet pharetra. Etiam a mi eget justo rutrum euismod. Praesent ligula lorem, consequat in suscipit sit amet, fermentum eu risus. Quisque sed lorem porttitor, rutrum arcu ut, cursus est. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris iaculis nisl non gravida dapibus. Nulla at tellus eleifend, vehicula lorem at, lacinia ex. Nam a volutpat dolor, non accumsan lectus. Praesent porta, purus eu consequat pharetra, eros nulla dignissim ipsum, a euismod justo metus in orci.


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel aliquam nulla, ut elementum urna. Pellentesque posuere eros vitae neque auctor semper. Quisque elit leo, congue non posuere nec, pharetra a velit. Morbi quam lacus, consequat vel euismod a, ullamcorper vitae augue. Integer in nulla euismod diam ornare tempor. Donec ut rutrum urna. Morbi vel efficitur lorem. Sed porttitor risus et urna facilisis, vel pellentesque nisi fermentum. Nam tempus tortor a venenatis auctor.


            [ordering] => 0
            [state] => 1
            [item_id] => 10
            [plaats] => Heenvliet
            [straat] => Drieëndijk 1a
        )

    [1] => Array
        (
            [id] => 3
            [title] => CijferAdvies Nissewaard
            [introtext] => 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus aliquet interdum enim vel volutpat. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin ullamcorper neque a porttitor malesuada. Etiam pharetra eget nisl sit amet pharetra. Etiam a mi eget justo rutrum euismod. Praesent ligula lorem, consequat in suscipit sit amet, fermentum eu risus. Quisque sed lorem porttitor, rutrum arcu ut, cursus est. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris iaculis nisl non gravida dapibus. Nulla at tellus eleifend, vehicula lorem at, lacinia ex. Nam a volutpat dolor, non accumsan lectus. Praesent porta, purus eu consequat pharetra, eros nulla dignissim ipsum, a euismod justo metus in orci.


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel aliquam nulla, ut elementum urna. Pellentesque posuere eros vitae neque auctor semper. Quisque elit leo, congue non posuere nec, pharetra a velit. Morbi quam lacus, consequat vel euismod a, ullamcorper vitae augue. Integer in nulla euismod diam ornare tempor. Donec ut rutrum urna. Morbi vel efficitur lorem. Sed porttitor risus et urna facilisis, vel pellentesque nisi fermentum. Nam tempus tortor a venenatis auctor.


            [ordering] => 1
            [state] => 1
            [item_id] => 3
            [plaats] => Heenvliet
            [straat] => Ridderstraat 5
        )

    [2] => Array
        (
            [id] => 4
            [title] => “Het Huidhuys” Afslank- en schoonheidsinstituut
            [introtext] => 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus aliquet interdum enim vel volutpat. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin ullamcorper neque a porttitor malesuada. Etiam pharetra eget nisl sit amet pharetra. Etiam a mi eget justo rutrum euismod. Praesent ligula lorem, consequat in suscipit sit amet, fermentum eu risus. Quisque sed lorem porttitor, rutrum arcu ut, cursus est. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris iaculis nisl non gravida dapibus. Nulla at tellus eleifend, vehicula lorem at, lacinia ex. Nam a volutpat dolor, non accumsan lectus. Praesent porta, purus eu consequat pharetra, eros nulla dignissim ipsum, a euismod justo metus in orci.


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel aliquam nulla, ut elementum urna. Pellentesque posuere eros vitae neque auctor semper. Quisque elit leo, congue non posuere nec, pharetra a velit. Morbi quam lacus, consequat vel euismod a, ullamcorper vitae augue. Integer in nulla euismod diam ornare tempor. Donec ut rutrum urna. Morbi vel efficitur lorem. Sed porttitor risus et urna facilisis, vel pellentesque nisi fermentum. Nam tempus tortor a venenatis auctor.


            [ordering] => 0
            [state] => 1
            [item_id] => 4
            [plaats] => Zuidland
            [straat] => Breedstraat 2
        )

    [3] => Array
        (
            [id] => 5
            [title] => Bouwbedrijf van de Water
            [introtext] => 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus aliquet interdum enim vel volutpat. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin ullamcorper neque a porttitor malesuada. Etiam pharetra eget nisl sit amet pharetra. Etiam a mi eget justo rutrum euismod. Praesent ligula lorem, consequat in suscipit sit amet, fermentum eu risus. Quisque sed lorem porttitor, rutrum arcu ut, cursus est. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris iaculis nisl non gravida dapibus. Nulla at tellus eleifend, vehicula lorem at, lacinia ex. Nam a volutpat dolor, non accumsan lectus. Praesent porta, purus eu consequat pharetra, eros nulla dignissim ipsum, a euismod justo metus in orci.


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel aliquam nulla, ut elementum urna. Pellentesque posuere eros vitae neque auctor semper. Quisque elit leo, congue non posuere nec, pharetra a velit. Morbi quam lacus, consequat vel euismod a, ullamcorper vitae augue. Integer in nulla euismod diam ornare tempor. Donec ut rutrum urna. Morbi vel efficitur lorem. Sed porttitor risus et urna facilisis, vel pellentesque nisi fermentum. Nam tempus tortor a venenatis auctor.


            [ordering] => 0
            [state] => 1
            [item_id] => 5
            [plaats] => Heevliet
            [straat] => Polyanderweg 2
        )

    [4] => Array
        (
            [id] => 6
            [title] => Studio NewMedia B.V.
            [introtext] => 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus aliquet interdum enim vel volutpat. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin ullamcorper neque a porttitor malesuada. Etiam pharetra eget nisl sit amet pharetra. Etiam a mi eget justo rutrum euismod. Praesent ligula lorem, consequat in suscipit sit amet, fermentum eu risus. Quisque sed lorem porttitor, rutrum arcu ut, cursus est. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris iaculis nisl non gravida dapibus. Nulla at tellus eleifend, vehicula lorem at, lacinia ex. Nam a volutpat dolor, non accumsan lectus. Praesent porta, purus eu consequat pharetra, eros nulla dignissim ipsum, a euismod justo metus in orci.


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel aliquam nulla, ut elementum urna. Pellentesque posuere eros vitae neque auctor semper. Quisque elit leo, congue non posuere nec, pharetra a velit. Morbi quam lacus, consequat vel euismod a, ullamcorper vitae augue. Integer in nulla euismod diam ornare tempor. Donec ut rutrum urna. Morbi vel efficitur lorem. Sed porttitor risus et urna facilisis, vel pellentesque nisi fermentum. Nam tempus tortor a venenatis auctor.


            [ordering] => 0
            [state] => 1
            [item_id] => 6
            [plaats] => Spijkenisse
            [straat] => Goudenregenplein 1 - Unit 38
        )

    [5] => Array
        (
            [id] => 7
            [title] => Taxi Overgaauw
            [introtext] => 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus aliquet interdum enim vel volutpat. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin ullamcorper neque a porttitor malesuada. Etiam pharetra eget nisl sit amet pharetra. Etiam a mi eget justo rutrum euismod. Praesent ligula lorem, consequat in suscipit sit amet, fermentum eu risus. Quisque sed lorem porttitor, rutrum arcu ut, cursus est. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris iaculis nisl non gravida dapibus. Nulla at tellus eleifend, vehicula lorem at, lacinia ex. Nam a volutpat dolor, non accumsan lectus. Praesent porta, purus eu consequat pharetra, eros nulla dignissim ipsum, a euismod justo metus in orci.


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel aliquam nulla, ut elementum urna. Pellentesque posuere eros vitae neque auctor semper. Quisque elit leo, congue non posuere nec, pharetra a velit. Morbi quam lacus, consequat vel euismod a, ullamcorper vitae augue. Integer in nulla euismod diam ornare tempor. Donec ut rutrum urna. Morbi vel efficitur lorem. Sed porttitor risus et urna facilisis, vel pellentesque nisi fermentum. Nam tempus tortor a venenatis auctor.





            [ordering] => 0
            [state] => 1
            [item_id] => 7
            [plaats] => Zuidland
            [straat] => Langeweg 2b
        )

    [6] => Array
        (
            [id] => 9
            [title] => Molengraaf Makelaardij
            [introtext] => 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus aliquet interdum enim vel volutpat. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin ullamcorper neque a porttitor malesuada. Etiam pharetra eget nisl sit amet pharetra. Etiam a mi eget justo rutrum euismod. Praesent ligula lorem, consequat in suscipit sit amet, fermentum eu risus. Quisque sed lorem porttitor, rutrum arcu ut, cursus est. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris iaculis nisl non gravida dapibus. Nulla at tellus eleifend, vehicula lorem at, lacinia ex. Nam a volutpat dolor, non accumsan lectus. Praesent porta, purus eu consequat pharetra, eros nulla dignissim ipsum, a euismod justo metus in orci.


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel aliquam nulla, ut elementum urna. Pellentesque posuere eros vitae neque auctor semper. Quisque elit leo, congue non posuere nec, pharetra a velit. Morbi quam lacus, consequat vel euismod a, ullamcorper vitae augue. Integer in nulla euismod diam ornare tempor. Donec ut rutrum urna. Morbi vel efficitur lorem. Sed porttitor risus et urna facilisis, vel pellentesque nisi fermentum. Nam tempus tortor a venenatis auctor.


            [ordering] => 0
            [state] => 1
            [item_id] => 9
            [plaats] => Zuidland
            [straat] => Mr. P.J. Oudweg 56
        )

)

As you can see the lat and long are out of place and only loaded once. Every item needs to have its own lat long like this:

[6] => Array
            (
                [id] => 9
                [title] => Molengraaf Makelaardij
                [introtext] => 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus 

                [ordering] => 0
                [state] => 1
                [item_id] => 9
                [plaats] => Zuidland
                [straat] => Mr. P.J. Oudweg 56
                [lat] => 51.8214507
                [lng] => 4.2591759
            )

What am I doing wrong? I've tried array_push but this shows the keys as numbers, and I need them to be text (lat,lng) because that is how I use them with javascript later on. array_merge like I am using now is also not giving the result I need.

Instead of using array_push, do it manually,

while($bedrijven    = $bedrijvencon->fetch_assoc()){
   $straatnaam = str_replace(' ', '+', $bedrijven['straat']);
   $bedrijflijst .= $bedrijven['plaats'].$straatnaam.'<br>';
   $getlatlong = file_get_contents("https://maps.googleapis.com/maps/api/geocode/json?address=".$bedrijven['plaats'].",".$straatnaam."&key=myapikey");
   $latlongarray = json_decode($getlatlong);
   $lat = '';
   $lng = '';
   foreach ($latlongarray->results as $key => $latlong){
    //  $latlonglijst .= $latlong->geometry->location->lat.'&nbsp;';
    //  $latlonglijst .= $latlong->geometry->location->lng.'<br>';
    $lat .= $latlong->geometry->location->lat;
    $lng .= $latlong->geometry->location->lng;
    // array_push($bedrijvenarray, $lat, $lng);
    $new_array = array('lat'=>''.$lat.'', 'lng'=>''.$lng.'');

   }
   $merged_array = array_merge($new_array,$bedrijvenarray);
   // Check the change below this line.
   $bedrijven['lat'] = $new_array['lat'];
   $bedrijiven['lng'] = $new_array['lng'];
   $bedrijvenarray[] = $bedrijven;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM