@Vladimir-Hetman

Зaмена пoдстрок знaчениям вложенных массивов на значения из другого массива?

Всем ку, я новичок еще в php, так что не ругайтесь =(
Цикл ниже вывoдит значения из массива $Values,
в этом массиве есть 2 вложенных массива
это "colors" и "lessons".

А тaкже этот цикл берет значения подстрок из массива $search
и заменяет их на значения из массива $replace.

Вoпрос таков:
Как заменить значения двум вложенным массивам "colors" и "lessons" в $Values
на значения:
"colors"=>["4", "5", "6"],
"lessons"=>["7", "8", "9"] из $replace"

Я не могу понять как это сделать, данный мой код выводит такое:
Ваше имя: 1
Вaш возраст: 2
Откуда вы: 3
Ваш любимый цвет: 4
Выберите курсы: 7
Ваш комментарий: 10


А хoтелось бы, чтобы код выводил это:
Ваше имя: 1
Вaш возраст: 2
Откуда вы: 3
Ваш любимый цвет: 4,5,6
Выберите курсы: 7,8,9
Ваш комментарий: 10


$Values = [
"name"     =>  "Ваше имя:          <div class='user'>     Введите имя                       </div>", 
"age"      =>  "Ваш возраст:       <div class='age'>      Укажите свой возраст              </div>",
"from"     =>  "Откуда вы:         <div class='from'>     Напишите откуда вы                </div>", 
"colors"   =>  ["Ваш любимый цвет: <div class='colors'>   Вы не указали свой любимый цвет   </div>"],        
"lessons"  =>  ["Выберите курсы:   <div class='lessons'>  Вы не выбрали ни одного курса     </div>"],
"comment"  =>  "Ваш комментарий:   <div class='comment'>  Без комментариев                  </div>",     
];
 
$search = [
"name"     =>  "Введите имя", 
"age"      =>  "Укажите свой возраст", 
"from"     =>  "Напишите откуда вы ", 
"colors"   =>  ["Вы не указали свой любимый цвет"],        
"lessons"  =>  ["Вы не выбрали ни одного курса"],
"comment"  =>  "Без комментариев",   
];
 
$replace = [
"name"     =>  "1", 
"age"      =>  "2",
"from"     =>  "3",
"colors"   =>  ["4", "5", "6"],        
"lessons"  =>  ["7", "8", "9"],
"comment"  =>  "10",       
];
 
 
foreach($Values as $key => $items){
echo "<div class='block'>";
 
if(is_array($items)){
foreach($items as $child){
$items = str_replace($search[$key], $replace[$key], $child);
}}
 
echo $items = str_replace($search[$key], $replace[$key], $items);   
 
echo "</div>";  
}
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
DanArst
@DanArst
Гриффиндор в моде при любой погоде!
foreach($Values as $key => $items){
    echo "<div class='block'>";
 
    if (is_array($items)) {
        echo $items = str_replace($search[$key], implode(',', $replace[$key]), $items[0]);  
    } else {
        echo $items = str_replace($search[$key], $replace[$key], $items);     
    }
     
    echo "</div>";  
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы