2015-03-27 1 views
-2

У меня есть массив как это:PHP - удалить characteres из многомерного массива

array(2) { 
    ["test"]=> 
    string(4) "test" 
    ["recipients"]=> 
    array(1) { 
    ["recipient_0"]=> 
    array(1) { 
     ["phone-number"]=> 
     string(12) "068-842-7893" 
    }, 
["recipient_1"]=> 
array(1) { 
    ["phone-number"]=> 
    string(12) "068-842-7893" 
}, 
["recipient_2"]=> 
array(1) { 
    ["phone-number"]=> 
    string(12) "068-842-7893" 
} 
    }.... 
} 

Мне нужно, чтобы удалить все не числовые символы из телефонного номера. Как я могу это сделать?

+8

Начните с показывая нам некоторые попытки – Rizier123

+1

'str_replace ('-', '', $ массив [ 'реципиенты' ] ['recipient_0'] [номер телефона]) ', если структура всегда одна и та же – treegarden

+0

@treegarden - я забыл сказать, что массив получателей может иметь много получателей. Вопрос отредактировал – Sasha

ответ

1

Как вы не указали свой код. Это может вам помочь.

Это приведет к удалению всех нечисловых символов из вашей строки.

preg_replace("/[^0-9]/", "", $string); 

По вашему коду:

$number_of_recipients = count($array["recipients"]); 
for($i=0; $i<$number_of_recipients; $i++){ 
    echo preg_replace("/[^0-9]/", "", $array["recipients"]["recipient_$i"]["phone-number"]); 
} 
2

См preg_replace функцию:

$number = preg_replace('~[^\d]~', '', $array['recipients']['recipient_0']['phone-number']); 

Для более получателей (на основе ОП комментарий ниже):

foreach ($array['recipients'] as $r) { 
    echo preg_replace('~[^\d]~', '', $r['phone-number']); 
} 
+0

Я забыл сказать, что массив получателей может иметь от 1 до многих получателей. Отредактировал вопрос. – Sasha

+0

@Sasha: так что добавьте цикл foreach, без проблем. – panther

+0

@ Саша: Я отредактировал свой ответ. – panther

0

Something вроде этого shoul сделайте это.

foreach ($arr['recipients'] as & $recipient) { 
    $recipient['phone-number'] = preg_replace('/[^\d]/', null, $recipient['phone-number']); 
} 

Вы также можете пройти массив, применяя функцию к каждому значению:

array_walk($arr['recipients'], function (& $value) { 
    $value['phone-number'] = preg_replace('/[^\d]/', null, $value['phone-number']); 
}); 
Смежные вопросы