Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除PHP数组中用于JSON格式的逗号_Php_Arrays_Json - Fatal编程技术网

删除PHP数组中用于JSON格式的逗号

删除PHP数组中用于JSON格式的逗号,php,arrays,json,Php,Arrays,Json,我正在输出一个json格式的数组。如果地址字段和市场字段之间用逗号分隔,那么如果字段不存在,我想删除逗号,这样我就不会得到带有逗号的空格。我曾尝试过内爆,但这似乎不起作用。。。正确的做法是什么 $data = array( 'ID' => $Member->memberID(), 'Name' => $Member->first_name() . ' ' . $Member->last_name(), 'Job Title' =>

我正在输出一个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(), ))),
像这样用于地址市场字段

<?php
echo "without array filter = " . implode(', ', array('a', '', 'b', '', ));
echo "<br/>";
echo "with array filter = ". implode(', ', array_filter(array('a', '', 'b', '', )));
?>
上述示例将输出:

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

有一些你做的事情。但是,您可以尝试使用
数组过滤器


也许用preg_替换

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

快速而肮脏的方法是修剪任何看起来像“,”替换为“,”的字符串,我认为你可以用空间内爆(“”,…)
$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);
 $json = json_encode($data);
 $json = preg_replace('/(^, )|( ,)/mi', '', $json);
 $data = json_decode($json);