2011-10-17 122 views
0

調整大小我有一個多維數組和我想是在每個第二程度的數組值極限應設置爲僅4。像我有類型的數組:多維陣列在PHP

Array 
(
[test2] => Array 
    (
     [0] => Array 
      (
       [application_id] => 405275016 
      ) 
     [1] => Array 
      (
       [application_id] => 405275016 
      ) 

     [2] => Array 
      (
       [application_id] => 303198288 
      ) 

     [3] => Array 
      (
       [application_id] => 303841592 
      ) 

    ) 

[test3] => Array 
    (
     [0] => Array 
      (
       [application_id] => 289267216 
      ) 

     [1] => Array 
      (
       [application_id] => 303198216 
      ) 

     [2] => Array 
      (
       [application_id] => 405275016 
      ) 

     [3] => Array 
      (
       [application_id] => 303198288 
      ) 

     [4] => Array 
      (
       [application_id] => 303841592 
      ) 

     [5] => Array 
      (
       [application_id] => 311430400 
      ) 

     [6] => Array 
      (
       [application_id] => 318096216 
      ) 

     [7] => Array 
      (
       [application_id] => 320256352 
      ) 
    ) 

) 

,我想,如果內部陣列值超過5計數不應該添加任何其它值給它什麼。我有此以上陣列形式,以這樣的:

Array 
(
[test2] => Array 
    (
     [0] => Array 
      (
       [application_id] => 405275016 
      ) 
     [1] => Array 
      (
       [application_id] => 405275016 
      ) 

     [2] => Array 
      (
       [application_id] => 303198288 
      ) 

     [3] => Array 
      (
       [application_id] => 303841592 
      ) 

    ) 

[test3] => Array 
    (
     [0] => Array 
      (
       [application_id] => 289267216 
      ) 

     [1] => Array 
      (
       [application_id] => 303198216 
      ) 

     [2] => Array 
      (
       [application_id] => 405275016 
      ) 

     [3] => Array 
      (
       [application_id] => 303198288 
      ) 

     [4] => Array 
      (
       [application_id] => 303841592 
      ) 
    ) 

) 

在這裏第二陣列陣列最後3個陣列被截斷,以便採取只有5計數作爲值。我嘗試了很多方法,但都沒有實現。

我如何能做到這一點任何想法,將不勝感激?

回答

1
foreach ($array as $k => $v) { // Loop outer array 
    for ($i = 5; isset($array[$k][$i]); $i++) { // Loop inner array, starting at element #5 
    unset($array[$k][$i]); // unset all elements >=5 
    } 
} 
2
$array = array_map(function ($arr) { return array_slice($arr, 0, 5); }, $array); 

注意,這裏使用PHP 5.3+的語法。

如果你需要的是一個數組(或類似的東西),其不能持有超過5元,你將需要實現自定義類(可能通過擴展ArrayObject)和/或玩弄SplFixedArray

2

,或者您可以使用array_slice函數是這樣的:

foreach ($array as $key=>$value) 
{ 
    $array[$key] = array_slice($value, 0, 5); 
} 
1

PHP有此行爲的現成功能,你必須使自己的功能添加值的陣列來實現這一點。 例如:

function array_add_value($array, $value) { 
    if(count($array) < 5) { 
     $array[] = $value; 
    } 
} 

如果你想處理一個已經有太多的元素現有陣列,你將不得不作出該 例類似的功能:

function fix_array($array) { 
    if(count($array) > 5) { 
     for($i=4;$i<count($array);$i++) { 
      unset($array[$i]); 
     } 
    } 
}