我正在输出一个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(), ))),
答案 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', '', )));
?>
我也敦促您在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_filter
,in 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);