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