2016-06-01 49 views
2

我有一個這樣的數組:從二維數組中刪除某些指標PHP

Array 
(
    [0] => Array 
     (
      [0] => 1 
      [1] => Firstname one 
      [2] => Lastname one 
     ) 

    [1] => Array 
     (
      [0] => 2 
      [1] => Firstname two 
      [2] => Lastname two 
     ) 

    [2] => Array 
     (
      [0] => 3 
      [1] => Firstname three 
      [2] => Lastname three 
     ) 
) 

現在,我想從數組中刪除整個index 1,即,所有的名字的。我打算通過遍歷整個數組並刪除其索引1來使用array_splice。但是有沒有更好的方法。 (我想元素的刪除後重新索引)。

+1

如果你想重新索引的話,我也會去'array_splice()'。 – Rizier123

回答

1
$yourarray = array_map(function($el) { 
    unset($el[1]); //remove index 1 
    return array_values($el); //return and reindex 
}, $yourarray); 
1

您還可以使用array_slice功能像

foreach($array as $k=>$v) 
{ 
    array_splice($v, 1,1); 
    $array[$k] = $v; 
} 

OUTPUT:

Array 
(
    [0] => Array 
     (
      [0] => 1 
      [1] => Lastname one 
     ) 

    [1] => Array 
     (
      [0] => 1 
      [1] => Lastname two 
     ) 

    [2] => Array 
     (
      [0] => 1 
      [1] => Lastname three 
     ) 

) 
+0

你的方法工作正常,但給出警告:array_splice()期望參數1爲數組,布爾給定' –

+0

我dint得到這種類型的警告,並確保你傳遞「$ v」作爲數組作爲array_splice中的第一個參數() –

-1
foreach($array as $k=>$v) 
{ 
    unset($array[$k][1]); /// Chnage the key of array which you want to remove 
} 
+0

你可以迭代'$ k'索引,但總是取消'$ i',這甚至不會增加。 – nospor

+0

這不起作用。您可以使用$ k而不是$ i。仍然需要執行一些邏輯來獲得慾望輸出。 –

1

你應該使用array_map

$input_array = [[1,'Firstname one','Lastname one'], 
       [2,'Firstname two','Lastname two'], 
       [3,'Firstname three','Lastname three']]; 

$resultArray = array_map(function($record) { 
    return [$record[0], $record[2]]; // add your desired records 
}, $input_array); 

echo '<pre>'; print_r($resultArray); 

輸出: -

Array 
(
    [0] => Array 
     (
      [0] => 1 
      [1] => Lastname one 
     ) 

    [1] => Array 
     (
      [0] => 2 
      [1] => Lastname two 
     ) 

    [2] => Array 
     (
      [0] => 3 
      [1] => Lastname three 
     ) 

)