2012-06-27 126 views
0

我有這樣一個問題,陣列0 10索引和我現在除去第0索引它像1至10 當我顯示該陣列有在第0 position.I空柱希望重新排列該陣列到0到9. 目的是數組構造我的網格,第0個位置用於編輯,如果用戶沒有權限,則我取消設置第0個元素。 我如何重新安排我的陣列,以0到9重新排列陣列中的PHP

樣品陣列結構是這樣

[fields] => Array 
    (
     [1] => Array 
      (
       [header] => Array 
        (
         [fieldName] => OFFERID 
         [displayName] => History 
         [width] => 70 
        ) 

       [visibility] => Array 
        (
         [showOnStart] => 1 
         [editable] => 
        ) 

       [cell] => Array 
        (
         [type] => raw 
         [params] => Array 
          (
           [text] => <a href="javascript:void(0);" id="{{OFFERID}}" class="btnHistory">History</a> 
          ) 

        ) 

       [sort] => Array 
        (
         [sortable] => 1 
        ) 

       [validator] => Array 
        (
         [name] => 
         [params] => 
        ) 

      ) 

     [2] => Array 
      (
       [header] => Array 
        (
         [fieldName] => OFFERID 
         [displayName] => Offer Id 
         [group] => 0 
        ) 

感謝 亞歷

+0

你如何去除數組的價值? – TNC

+0

你如何遍歷數組並顯示它? – bretterer

+0

使用['array_shift'(http://php.net/array_shift)刪除第一個值,這個數字將被重新索引爲你使用數字鍵。 – hakre

回答

3

你可以使用array_splice刪除陣列的一部分。

array array_splice (array &$input , int $offset [, int $length = 0 [, mixed $replacement ]])

例如:

$array = array(0 => "a", 1 => "b", 2 => "c"); 
array_splice($array, 0, 1); 
var_dump($array); 

將輸出:

array(2) { 
    [0]=> string(1) "b" 
    [1]=> string(1) "c" 
} 

通知會重新索引你的陣列,爲你的要求。

+1

+1:走的路我會說。 – hakre

+0

謝謝Dvir array_splice正在爲我工​​作 – user1390436

6

有幾個方法可以做到這一點,這裏有兩個最短的( array_values()/array_merge()):

$array = array_values($array); 
// or 
$array = array_merge($array); 

但你可能會考慮使用array_shift()/array_pop()/array_splice()從所述陣列的代替(大概)unset()荷蘭國際集團它刪除的項 - 這些將自動所有鍵轉變成連續0索引的順序。

+0

有時編輯可能會在另一個位置,目前它的第0個位置,所以只有不適用於我。 – user1390436

+0

@ user1390436其實['array_splice()'](http://php.net/manual/en/function.array-splice.php)可以讓你從第n個位置的數組中移除元素,然後重新排序鍵一個操作 - 我編輯了我的答案。 – DaveRandom

+0

這正是我建議最初:) –