首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拆分电话号码

拆分电话号码
EN

Stack Overflow用户
提问于 2012-03-01 02:50:49
回答 1查看 60关注 0票数 0

代码如下:

代码语言:javascript
复制
// $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)." -->";

产生:

代码语言:javascript
复制
<!-- Telephone: Array
(
    [0] => 
)
-->    

// if billdata billinginfo telephone is blank
if(count($telephone)==0) {
  $telephone = explode('-', $partinfo['BusinessPhone']);
}
echo "<!-- Telephone2: ". print_r($partinfo['BusinessPhone'], true)." -->";

产生:

代码语言:javascript
复制
<!-- Telephone2: -567-5675678- -->

但是..。

代码语言:javascript
复制
echo "<!-- Telephone3: ". print_r($telephone, true)." -->";

产生:

代码语言:javascript
复制
<!-- Telephone3: Array
(
    [0] => 
)
-->

我认为由于count($telephone)返回1而不是空数组,这就是我错的地方。做这件事最好的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-01 03:05:28

PHP documentation for explode返回值部分

如果分隔符为空字符串(""),则

()将返回FALSE。如果分隔符中包含的值不在字符串中,并且使用了负限制,则返回空数组,否则包含字符串的数组将返回

因此,由于$billdata['BillingInfo']['telephone'] = ''包含一个空字符串,而空字符串不包含给定的分隔符,因此它将返回一个包含给定字符串的数组。

相反,您可以做的是:

代码语言:javascript
复制
$telephone = false;
if ($billdata['BillingInfo']['telephone']) {
    $telephone = explode('-', $billdata['BillingInfo']['telephone']);
}

if (!$telephone) {
    $telephone = explode('-', $partinfo['BusinessPhone']);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9504883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档