Здравствуйте!
Пишу модуль и немного застряла на простом кажется, но что-то не идет у меня
Есть массив типа:
'A' => 1,
'B' => 2,
'C' => 3,
'D' => 4,
...
);
// Есть строка с данными
$num='ABD';
Подскажите гуру -пхп)
Как получить методом перебора данных из массива результаты в виде строки, чтобы получить следующий результат - $num_rezult = '124'
Комментарии
У вас же опять-таки будет кириллица? Тогда нужна мультибайтовая реализация (как вам предлагал когда-то charOFF).
<?php
$val_ar = array(
'A' => 1,
'B' => 2,
'C' => 3,
'D' => 4,
...
); // Есть строка с данными
$num='ABD'; // Обход всех символов строки.
$num_rezult = '';
foreach(mb_str_split($num) as $alpha_val)
{
$num_rezult .= $val_ar[$alpha_val];
}
// Теперь $num_rezult содержит искомый результат.
?>
Благодарю, работает! )))
В PHP есть могучие функции работы с массивами, ничего перебирать не надо, эти функции сами
кого хошьвсё переберут:'A' => 1,
'B' => 2,
'C' => 3,
'D' => 4,
'Я' => 9,
);
// Есть строка с данными
$num='ABDЯ';
echo(str_replace(array_keys($val_ar), $val_ar, $num));
Благодарю, этот вариант тоже работает! )))
Я бы использовал именно его как лучшее решение.
Причина не только в компактности синтаксиса, но и в binary-safe механике функции str_replace (т.е. она изначально корректно обрабатывает мультибайтные строки).