获得以下代码:
// $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而不是空数组,那就是我出错的地方。最好的方法是什么?
答案 0 :(得分:1)
来自PHP documentation for explode的返回值部分:
如果分隔符是空字符串(“”),则explode()将返回FALSE。 如果分隔符 包含一个未包含在字符串中的值,并使用负限制,然后使用 将返回空数组,否则将返回包含字符串的数组。
所以发生的事情是,因为$billdata['BillingInfo']['telephone'] = ''
包含一个空字符串,它不包含给定的分隔符,所以它返回一个包含给定字符串的数组。
你能做的是:
$telephone = false;
if ($billdata['BillingInfo']['telephone']) {
$telephone = explode('-', $billdata['BillingInfo']['telephone']);
}
if (!$telephone) {
$telephone = explode('-', $partinfo['BusinessPhone']);
}