簡體   English   中英

如何在php中為關聯數組添加值和鍵

[英]How to add value and key to associative array in php

我想在循環中添加一個關聯數組內的兩個鍵和值,但我不能得到它的工作。

目前這是我的代碼:

$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>';

這將返回以下內容:

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
        )

)

正如您所看到的,lat 和 long 不合適,並且只加載了一次。 每個項目都需要有自己的經緯度,如下所示:

[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
            )

我究竟做錯了什么? 我試過array_push但這將鍵顯示為數字,我需要它們是文本 (lat,lng) 因為這就是我稍后在 javascript 中使用它們的方式。 像我現在使用的array_merge也沒有給出我需要的結果。

不要使用array_push,而是手動進行,

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM