删除父数组并配对其内部数组值

时间:2013-04-27 20:32:23

标签: php arrays

这是我的数组

$array =   Array
    (
        [0] => Array
            (
                [name] => crud_inputs[id]
                [value] => id_Value
            )

        [1] => Array
            (
                [name] => crud_inputs[user_id][]
                [value] => userid_Value
            )


        [2] => Array
            (
                [name] => crud_inputs[details]
                [value] => details_value
            )

    )

我想删除父数组($array)并配对 [name]=[value] 在每个内部数组中

我想最终得到一个 crud_inputs数组

    $crud_inputs[id]         = id_Value ;
    $crud_inputs[user_id][] = userid_Value ;
    $crud_inputs[details]    = details_value ;

-     我想在最后做这样的事情

$MY_ORM->UPDATE( $table ,  $crud_inputs );

这是我到目前为止所写的,但是它不起作用,我在最后得到一个空数组

$crud_inputs = array();
foreach($array as $ar )
{
  $$ar['name'] =  $ar['value'];
}

var_dump($crud_inputs);

@Wrikken,============================================ =============

这正是我得到的原始数组

array (size=6)
  0 => 
    array (size=2)
      'name' => string 'crud_inputs[id]' (length=15)
      'value' => string 'id_Value' (length=8)
  1 => 
    array (size=2)
      'name' => string 'crud_inputs[user_id][]' (length=22)
      'value' => string 'userid_Value' (length=3)
  2 => 
    array (size=2)
      'name' => string 'crud_inputs[user_id][]' (length=22)
      'value' => string 'userid_Value2' (length=3)
  3 => 
    array (size=2)
      'name' => string 'implode[user_id]' (length=16)
      'value' => string ',' (length=1)
  4 => 
    array (size=2)
      'name' => string 'crud_inputs[date]' (length=18)
      'value' => string 'date_value' (length=13)
  5 => 
    array (size=2)
      'name' => string 'crud_inputs[ip]' (length=15)
      'value' => string 'ip_value' (length=13)

-

这就是我处理它的方式

    $new = array();
    foreach($array as $value){
            $new[$value['name']] = $value['value'];
    }
    $item = $new;
   var_dump($item);

1 个答案:

答案 0 :(得分:1)

这是什么意思是GET或POST阵列? parse_str有帮助:

$array = ...your array...
foreach($array as &$item){
     $item = array_map('urlencode',$item);
     $item = implode('=',$item);
}
$string = implode('&',$array);
parse_str($string,$result);

var_dump($result);

//and if I read the rest right:
foreach($result['implode'] as $key =>$value){
     $result['crudinputs'][$key] = implode($value,$result['crudinputs'][$key]);
}

早些时候:

Bad oneliner(你的同事会恨你):

foreach($array as &$item){
        $item = call_user_func_array('array_combine',call_user_func_array('array_merge_recursive',$item));
}

可读多线人(大家都很开心):

foreach($array as &$item){
        $new = array();
        foreach($item as $value){
                $new[$value['name']] = $value['value'];
        }
        $item = $new;
}

如果我正确阅读了你的代码,这假设一个带有多个项的数组,那就像:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [name] => key0
                    [value] => value0
                )

            [1] => Array
                (
                    [name] => key1
                    [value] => value1
                )

            [2] => Array
                (
                    [name] => key2
                    [value] => value2
                )

            [3] => Array
                (
                    [name] => key3
                    [value] => value3
                )

        )

    [1] => Array
             .... more items here

如果不是(您只有1个项目),则可以省略两个示例中的外部foreach循环。