2012-02-29 4 views
0

Got код ниже:Расщепление номера телефонов

// $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] => 
) 
--> 

Я полагаю, что, так как отсчет ($ телефон) возвращает 1 вместо пустого массива, что это, где я буду неправильно. Какой был бы лучший способ сделать это?

+0

делать то, что? Какой у Вас вопрос? –

+0

Каков запрос? Где определена $ billdata? Почему бы не использовать $ partInfo? –

+0

'var_dump ($ billdata); var_dump ($ partinfo); ' – Travesty3

ответ

1

С Возвращаемых значениями раздела 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']); 
}