-1

这是我的数组

$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数组

IE

    $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);
4

1 回答 1

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]);
}

初期,早些时候:

糟糕的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 在两个示例中省略外循环。

于 2013-04-27T20:53:38.300 回答