Проверьте, содержит ли массив дочерний массив, и объедините его с родительским массивом.

1

Я хочу делать:

  1. Проверьте, содержит ли массив массив.
  2. Если родительский массив содержит дочерний массив, замените ключ и значение дочернего массива.
  3. Обновите все ключи дочернего массива до '1'. т.е. значение дочернего массива после ключа обмена и значения
  4. Удалите дочерний массив и объедините его элемент в родительский массив.

    Пример:

Сгенерированный массив:

 array
   'first_name' => string 'sushil' (length=6)
   'last_name' => string 'asfasfaf' (length=8)
   'gen' => string 'Male' (length=4)
   'language' => string 'PHP' (length=3)
   'biodata' => string 'sfsafsaf hdffd ' (length=15)
   'hobbies' => 
    array
       0 => string 'gaming' (length=6)
       1 => string 'football' (length=8)
       2 => string 'cricket' (length=7)
   'academic_qualification' => string 'Bachelor' (length=8)

Я хочу изменить как выше шаг:

 //finds if child array exists. If exists interchange key and value and update value to '1'.
 array
  'gaming' => int 1
  'football' => int 1
  'cricket' => int 1

И, наконец, удалить исходный дочерний массив и слить модифицированный дочерний элемент массива в родительский массив. Моя ожидаемая форма массива:

 array
   'first_name' => string 'sushil' (length=6)
   'last_name' => string 'asfasfaf' (length=8)
   'gen' => string 'Male' (length=4)
   'language' => string 'PHP' (length=3)
   'biodata' => string 'sfsafsaf hdffd ' (length=15)
   'academic_qualification' => string 'Bachelor' (length=8)
   'gaming' => int 1
   'football' => int 1
   'cricket' => int 1

Я пробовал как следующий, но не работал:

 $submited_data = $_POST;
         var_dump($submited_data);
         foreach($submited_data as $value){  
            if(is_array($value)) {        //checks if array contains array.
                $a = array_flip($value);  //then interchange
                var_dump($a);
                foreach($a as $key=>$b){
                    $a[$key] = 1;         //update all value to '1'.      
                }
                array_push($submited_data,$a);    // here is the problem I cannot proceed to furthur step. Please help me. How to merge modified child array to parent array.
                var_dump($a);

            }
        }

Спасибо.

Теги:
arrays

2 ответа

1
Лучший ответ

Я просто переписал ваш код. Скажите, пожалуйста, если что-нибудь пойдет не так!

<?php
    $submited_data = $_POST;
    foreach($submited_data as $key => $data)
    {
        if(is_array($data))
        {
            foreach($data as $sub_data)
            {
                $submited_data[$sub_data] = 1; 
            }
            unset($submitted_data[$key]);
        }
    }
  • 0
    вау .. сработало успешно. Спасибо.
  • 0
    Нет проблем. Не могли бы вы пометить этот ответ как решенный (зеленая галочка рядом с моим ответом)? Это может помочь другим быстрее найти ответ
Показать ещё 1 комментарий
0

предположим, что $array - это массив с дочерним массивом,

$mergedArray = [];

array_walk_recursive($array, function($a,$b) use (&$mergedArray) { $mergedArray[$b] = $a; }); 

echo '<pre>';
print_r($mergedArray);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню