代码如下:
// $partInfo has data filled in
// $partinfo['BusinessPhone'] = '-567-5675678-'
// $billdata *should* have data filled in
// $billdata['BillingInfo']['telephone'] = ''
$telephone = explode('-', $billdata['BillingInfo']['telephone']);
echo "<!-- Telephone: ". print_r($telephone, true)." -->";产生:
<!-- Telephone: Array
(
[0] =>
)
-->
// if billdata billinginfo telephone is blank
if(count($telephone)==0) {
$telephone = explode('-', $partinfo['BusinessPhone']);
}
echo "<!-- Telephone2: ". print_r($partinfo['BusinessPhone'], true)." -->";产生:
<!-- Telephone2: -567-5675678- -->但是..。
echo "<!-- Telephone3: ". print_r($telephone, true)." -->";产生:
<!-- Telephone3: Array
(
[0] =>
)
-->我认为由于count($telephone)返回1而不是空数组,这就是我错的地方。做这件事最好的方法是什么?
发布于 2012-03-01 03:05:28
从PHP documentation for explode的返回值部分
如果分隔符为空字符串(""),则
()将返回FALSE。如果分隔符中包含的值不在字符串中,并且使用了负限制,则返回空数组,否则包含字符串的数组将返回。
因此,由于$billdata['BillingInfo']['telephone'] = ''包含一个空字符串,而空字符串不包含给定的分隔符,因此它将返回一个包含给定字符串的数组。
相反,您可以做的是:
$telephone = false;
if ($billdata['BillingInfo']['telephone']) {
$telephone = explode('-', $billdata['BillingInfo']['telephone']);
}
if (!$telephone) {
$telephone = explode('-', $partinfo['BusinessPhone']);
}https://stackoverflow.com/questions/9504883
复制相似问题