2013-04-27 42 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