Удаление запятых в массиве PHP для форматирования JSON - PullRequest
0 голосов
/ 25 июня 2018

Я вывожу массив в формате json.Там, где у меня есть поля адреса и поля Market, разделенные запятыми, я хочу удалить запятые, если поля не существует, поэтому я не получаю пустых пробелов с запятыми.У меня был спад с имплозой, но это не сработало ... как правильно это сделать?

  $data = array(
    'ID' => $Member->memberID(),
    'Name' => $Member->first_name() . ' ' . $Member->last_name(),
    'Job Title' => $Member->expert_job_title(),
    'Organisation' => $Member->expert_org_name(),
    'Organisation Type' => $Member->expert_org_type(),
    'Website' => 'http://' . $Member->expert_org_website(),
    'Phone' => $Member->expert_org_phone(),
    'Expertise' => $Member->expert_org_desc(),
    'Markets' => implode(', ', array($Member->expert_org_market_medical(), $Member->expert_org_market_pharmaceuticals(), $Member->expert_org_market_agriculture(), $Member->expert_org_market_food(), )),
    'Address' => $Member->expert_address_one() . ', ' . $Member->expert_address_two() . ', ' . $Member->expert_address_town_city() . ', ' . $Member->expert_address_county_state() . ', ' . $Member->expert_org_country() . ', ' . $Member->expert_address_code(),
    'Latitude' => $Member->expert_org_latitude(),
    'Longitude' => $Member->expert_org_longitude()
  );



header('Content-Type: application/json');

echo json_encode($data, JSON_PRETTY_PRINT);

ОБНОВЛЕНИЕ С ОТВЕТОМ

'Markets' => implode(', ', array_filter(array($Member->expert_org_market_medical(), $Member->expert_org_market_pharmaceuticals(), $Member->expert_org_market_agriculture(), $Member->expert_org_market_food(), ))),
'Address' => implode(', ', array_filter(array($Member->expert_address_one(), $Member->expert_address_two(), $Member->expert_address_town_city(), $Member->expert_address_county_state(), $Member->expert_org_country(), $Member->expert_address_code(), ))),

Ответы [ 3 ]

0 голосов
/ 25 июня 2018

Есть некоторые вещи, которые вы делаете.Но вы можете попробовать array_filter, в документации .

$Markets = array($Member->expert_org_market_medical(), $Member->expert_org_market_pharmaceuticals(), $Member->expert_org_market_agriculture(),  $Member->expert_org_market_food());
$Markets = array_filter($Markets, function($item) {
    // return if that strings isn't null
    // maybe you want to add another restrictions here
    return strlen($item);
}, $Markets);
// all empty items was removed.|
$Markets = implode(',', $Markets);
0 голосов
/ 25 июня 2018

Может быть с preg_replace

 $json = json_encode($data);
 $json = preg_replace('/(^, )|( ,)/mi', '', $json);
 $data = json_decode($json);
0 голосов
/ 25 июня 2018

Использовать array_filter () как для Адрес и Рынки поле

<?php
echo "without array filter = " . implode(', ', array('a', '', 'b', '', ));
echo "<br/>";
echo "with array filter = ". implode(', ', array_filter(array('a', '', 'b', '', )));
?>

DEMO : https://eval.in/1027921

Я также призываю вас увидеть пример на php.net, потому что это поможет вам ясно понять, как работает array_filter() и какие символы отфильтрованы.

<?php

$entry = array(
             0 => 'foo',
             1 => false,
             2 => -1,
             3 => null,
             4 => ''
          );

print_r(array_filter($entry));
?>

Приведенный выше пример выдаст:

Array
(
    [0] => foo
    [2] => -1
)
...