首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查数组是否包含子数组,并在父数组中合并

检查数组是否包含子数组,并在父数组中合并
EN

Stack Overflow用户
提问于 2015-07-13 11:24:24
回答 2查看 5.5K关注 0票数 1

我想做:

  1. 检查数组是否包含数组。
  2. 如果父数组包含子数组,则交换子数组的键和值。
  3. 将子数组的所有键更新为“1”。即交换键和值后子数组的值
  4. 删除子数组并将其元素合并到父数组。 示例:

生成的数组:

代码语言:javascript
复制
 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)

我想按照上面的步骤修改:

代码语言:javascript
复制
 //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

最后,取消原始子数组,并将修改后的子数组的元素合并到父数组。我的预期数组表单:

代码语言:javascript
复制
 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

我试过这样做,但不起作用:

代码语言:javascript
复制
 $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);
                
            }
        }

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-13 11:30:44

我刚刚重写了你的代码。如果出了什么问题,请告诉我!

代码语言:javascript
复制
<?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]);
        }
    }
票数 1
EN

Stack Overflow用户

发布于 2015-07-13 11:31:22

假设$array是带有子数组的数组,

代码语言:javascript
复制
$mergedArray = [];

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

echo '<pre>';
print_r($mergedArray);
echo '</pre>';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31382086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档