2013-04-27 44 views
-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阵列

$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); 
+0

您是否尝试过一个简单的'foreach'循环,或不为你做的伎俩? – Wrikken 2013-04-27 20:36:14

+0

你有任何控制传入的名称吗? – 2013-04-27 20:39:47

+0

@Wrikken没有它不工作,我已经添加了我的代码在最后 – max 2013-04-27 20:40:46

回答

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循环。

+0

thnak你,我只错1分需要的foreach结束在我的代码添加了两个!我想给它一个尝试 – max 2013-04-27 21:00:21

+0

它的作品不错,但还是有一个额外的外部阵列,现在我结束了'阵列([crud_inputs [KEY0] => value0)'不'crud_inputs [KEY0] => value0 ' – max 2013-04-27 21:15:05

+0

因此,'$ item = $ item ['crudinputs']'最后?或者我错过了你的输入数组的东西? [看看这个在键盘上运行代码的例子](http://codepad.org/QUX4QFXA)。 – Wrikken 2013-04-27 21:16:53