删除PHP数组中的逗号以进行JSON格式化

时间:2018-06-25 16:52:56

标签: php arrays json

我正在输出一个json格式的数组。如果地址字段和市场字段之间用逗号分隔,我想在不存在逗号的情况下删除逗号,因此我不会以逗号分隔空格。我经历了一次内爆,但是似乎不起作用……正确的方法是什么?

  $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 :(得分:3)

在{strong>地址和市场字段

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

演示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
)

答案 1 :(得分:0)

要做一些事情。但是,您可以尝试array_filterin documentation

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

答案 2 :(得分:0)

也许使用preg_replace

 $json = json_encode($data);
 $json = preg_replace('/(^, )|( ,)/mi', '', $json);
 $data = json_decode($json);
相关问题