如何将解码的json值添加到循环内的数组中

时间:2017-10-31 15:00:44

标签: php arrays json

我有一个json对象,如下所示:

"{"image_intro":"images\/leden\/vannoord.png","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}"

我正在循环每个都有这样一个对象的项目,但我想将图片网址发送到javascript文件,不能像这样使用它。

所以我使用以下代码来获取可读的URL:

   $bedrijfimage = $bedrijven['images'];
   $bedrijfimg = json_decode($bedrijfimage);

   if($bedrijfimg->image_intro != ''){
     $bedrijvenimage = '../cms/'.$bedrijfimg->image_intro;
   }else{
     $bedrijvenimage = '../images/logo_ovn.png';
   }

这很好,除了我想将结果添加到我的数组中,我似乎无法将两者合并,或者结果在我的主数组之后加载到一个单独的数组中,或者它创建了一个单独的数组每个图像。

这是我目前的代码:

$bedrijven            = "
SELECT
  cnt.id, cnt.title, cnt.introtext, cnt.ordering, cnt.images, cnt.alias, cnt.requested, cnt.lat, cnt.lng, cnt.state, f.item_id,
  MAX(CASE WHEN f.field_id = 3 THEN f.value END) AS plaats,
  MAX(CASE WHEN f.field_id = 2 THEN f.value END) AS postcode,
  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, postcode";
$bedrijvencon       = $conn->query($bedrijven);
$bedrijvenarray = [];

while($bedrijven    = $bedrijvencon->fetch_assoc()){
  $straatnaam = '';
  $plaatsnaam = '';
  // Stop $bedrijven in een array
   array_push($bedrijvenarray, $bedrijven);
   // Vervang de straatnaam spaties met plusjes voor de filegetcontents url
   $straatnaam .= str_replace(' ', '+', $bedrijven['straat']);
   $postcode .= str_replace(' ', '+', $bedrijven['postcode']);
   $plaatsnaam .= $bedrijven['plaats'];

    // Kijk of er al een plaatsnaam en straatnaam in de database bestaan bij het artikel
    // $existcheck            = "
    // DESC snm_content";
    // $existcheckcon       = $conn->query($existcheck);
    // $existcheck       = $existcheckcon->fetch_assoc();

    if(($bedrijven['requested'] == 0) && ($bedrijven['state'] == 1)){
      $getlatlong = file_get_contents("https://maps.googleapis.com/maps/api/geocode/json?address=".$bedrijven['plaats'].",".$straatnaam."&key=apikey");
      $latlongarray = json_decode($getlatlong);
      $lat = '';
      $lng = '';

      // Leeg de latlong na elke loop
      foreach ($latlongarray->results as $key => $latlong){
       //  $latlonglijst .= $latlong->geometry->location->lat.' ';
       //  $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.'');

      }
      // Voeg lat en lng toe aan de $bedrijven array
      // $bedrijven['lat'] = $new_array['lat'];
      // $bedrijven['lng'] = $new_array['lng'];
      // $bedrijven['intro_image'] = $image_array['intro_image'];
      // $bedrijvenarray1[] = $bedrijven;


      $updatetable            = "
      UPDATE snm_content
      SET requested = 1, lat = '".$lat."', lng = '".$lng."'
      WHERE id = '".$bedrijven['id']."'";
      $updatetablecon       = $conn->query($updatetable);

      // echo $updatetable;

    }else if($bedrijven['requested'] == 1){

    }




   $bedrijfimage = $bedrijven['images'];
   $bedrijfimg = json_decode($bedrijfimage);

   if($bedrijfimg->image_intro != ''){
     $bedrijvenimage = '../cms/'.$bedrijfimg->image_intro;
   }else{
     $bedrijvenimage = '../images/logo_ovn.png';
   }
}
$jsonobject = json_encode($bedrijvenarray);

如果我循环它会返回以下内容:

9
:
alias
:
"van-noord-bv"
id
:
"108"
images
:
"{"image_intro":"images\/leden\/vannoord.png","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}"
introtext
:
""
item_id
:
"108"
lat
:
"51.8204687"
lng
:
"4.2526415"
ordering
:
"4"
plaats
:
"Zuidland"
postcode
:
"3214 VB"
requested
:
"1"
state
:
"1"
straat
:
"Kerkweg 9"
title
:
"Van Noord bv"
__proto__
:
Object

我想更改输出并添加一个键和值,如下所示:

image: ../cms/images/leden/vannoord.png

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

array_push($bedrijvenarray, $bedrijven);移动到循环体的末尾:

    $bedrijfimage = $bedrijven['images'];
    $bedrijfimg = json_decode($bedrijfimage);

    if($bedrijfimg->image_intro != ''){
        $bedrijvenimage = '../cms/'.$bedrijfimg->image_intro;
    }else{
        $bedrijvenimage = '../images/logo_ovn.png';
    }

    $bedrijven["image"] = $bedrijvenimage;

    array_push($bedrijvenarray, $bedrijven);
}
$jsonobject = json_encode($bedrijvenarray);