2013-07-04 128 views
-4

我使用$_POST用於獲取所有input值和它生成類似的數組:拆分PHP數組

[seen1] => 1 
[flag1] => 0 
[time1] => 275 
[qtsnums1] => 17 
[seen2] => 0 
[flag2] => 0 
[time2] => 0 
[qtsnums2] => 11 
[seen3] => 0 
[flag3] => 0 
[time3] => 0 
[qtsnums3] => 9 
[seen4] => 0 
[flag4] => 0 
[time4] => 0 
[qtsnums4] => 5 
[seen5] => 0 
[flag5] => 0 
[time5] => 0 
[qtsnums5] => 10 

我要拆分:

[seen1] => 1 
[flag1] => 0 
[time1] => 275 
[qtsnums1] => 17 

和在1個變量,插入如何做這個?

$output = array(); 
$wantedKeys = array('seen1', 'flag1', 'time1', 'qtsnums1'); 
foreach ($wantedKeys as $key) 
{ 
    $output[$key] = $input[$key]; 
} 
print_r($output); 

爲了獲取列表包含前四個按鍵,無論它們是如何命名的:

+0

改說你的問題 –

+0

@ rr-他想要做稱爲組塊的操作。 – Patashu

+0

您是否需要在鍵中使用1,2,3後綴重組數組? – Jithin

回答

2

假設你輸入數組被命名爲$input,您可以使用此創建新的數組

$wantedKeys = array_slice(array_keys($input), 0, 4); 

你也可以使用前面提到的array_chunk。如果你想脫離一行,你可以這樣做:

$output = current(array_chunk($input, 4, true)); 

請注意,它會在PHP的新版本中生成有關引用的警告。在這種情況下,你可以使用這個:

$output = array_chunk($input, 4, true)[0]; 

然而,這將在舊的PHP的生成語法錯誤。

3

array_chunk將幫助您拆分數組:

$new = array_chunk($_POST, 4, true) ; //Do not forget to use TRUE to save indices 

$desired_result = $new[0] ; 
var_dump($desired_result) ; 
1

呀array_slice(),如果你只需要第4,但下面是一個一般的,這將輸入數組不同的塊就行了。

$array = array(
    'seen1' => 1, 
    'flag1' => 0, 
    'time1' => 3, 
    'qtsnums1' => 4, 
    'seen2' => 1, 
    'flag2' => 0, 
    'time2' => 3, 
    'qtsnums2' => 4, 
    'seen3' => 1, 
    'flag3' => 0, 
    'time3' => 3, 
    'qtsnums3' => 4, 
); 

$new_array = array(); 

foreach($array as $key => $value){ 
    preg_match('/([^0-9]+)(\d+)/', $key, $matches); 
    $new_array[$matches[2]][$matches[1]] = $value; 
} 
print_r($new_array); 

輸出將如下

Array 
(
    [1] => Array 
     (
      [seen] => 1 
      [flag] => 0 
      [time] => 3 
      [qtsnums] => 4 
     ) 

    [2] => Array 
     (
      [seen] => 1 
      [flag] => 0 
      [time] => 3 
      [qtsnums] => 4 
     ) 

    [3] => Array 
     (
      [seen] => 1 
      [flag] => 0 
      [time] => 3 
      [qtsnums] => 4 
     ) 

) 

所以給$ new_array [1]將獲得1塊和$ new_array [2]將獲得第二塊等。