Вывести выбранные данные методом перебора параметров из массива в строку php

Аватар пользователя rukoved rukoved 12 октября 2020 в 19:36

Здравствуйте!
Пишу модуль и немного застряла на простом кажется, но что-то не идет у меня

Есть массив типа:

        $val_ar = array(
                'A' => 1,
                'B' => 2,
                'C' => 3,
                'D' => 4,
                 ...
        );

// Есть строка с данными
$num='ABD';

Подскажите гуру -пхп)
Как получить методом перебора данных из массива результаты в виде строки, чтобы получить следующий результат - $num_rezult = '124'

Лучший ответ

Аватар пользователя marassa marassa 12 октября 2020 в 20:17
1

rukoved wrote: методом перебора данных из массива

В PHP есть могучие функции работы с массивами, ничего перебирать не надо, эти функции сами кого хошь всё переберут:

$val_ar = array(
                'A' => 1,
                'B' => 2,
                'C' => 3,
                'D' => 4,
                'Я' => 9,
        );
// Есть строка с данными
$num='ABDЯ';
echo(str_replace(array_keys($val_ar), $val_ar, $num));

Комментарии

Аватар пользователя OldWarrior OldWarrior 12 октября 2020 в 20:05
1

У вас же опять-таки будет кириллица? Тогда нужна мультибайтовая реализация (как вам предлагал когда-то 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 содержит искомый результат.
?>
Аватар пользователя marassa marassa 12 октября 2020 в 20:17
1

rukoved wrote: методом перебора данных из массива

В PHP есть могучие функции работы с массивами, ничего перебирать не надо, эти функции сами кого хошь всё переберут:

$val_ar = array(
                'A' => 1,
                'B' => 2,
                'C' => 3,
                'D' => 4,
                'Я' => 9,
        );
// Есть строка с данными
$num='ABDЯ';
echo(str_replace(array_keys($val_ar), $val_ar, $num));
Аватар пользователя OldWarrior OldWarrior 12 октября 2020 в 20:33
1

Я бы использовал именно его как лучшее решение.
Причина не только в компактности синтаксиса, но и в binary-safe механике функции str_replace (т.е. она изначально корректно обрабатывает мультибайтные строки).