Разделение телефонных номеров - PullRequest
0 голосов
/ 29 февраля 2012

Полученный код:

// $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 вместо пустого массива, то я ошибаюсь.Каков был бы лучший способ сделать это?

1 Ответ

1 голос
/ 29 февраля 2012

Из раздела Возвращаемые значения в документации PHP для explode :

Если разделитель - пустая строка (""), explode ()вернет ЛОЖЬ. Если разделитель содержит значение, которое не содержится в строке , и используется отрицательный предел, то будет возвращен пустой массив, в противном случае будет возвращен массив, содержащий строку .

Итак, поскольку $billdata['BillingInfo']['telephone'] = '' содержит пустую строку, которая не содержит заданный разделитель, он возвращает массив, содержащий данную строку.

Вместо этого вы можете сделать следующее::

$telephone = false;
if ($billdata['BillingInfo']['telephone']) {
    $telephone = explode('-', $billdata['BillingInfo']['telephone']);
}

if (!$telephone) {
    $telephone = explode('-', $partinfo['BusinessPhone']);
}
...