PHP多维数组按键删除元素

时间:2017-05-19 02:44:07

标签: php arrays multidimensional-array

我有一个多维数组,如下所示:

Array
(
[0] => Array
    (
        [id] => 1
        [name] => Edeka Blaschek
        [description] => Lebensmittelmarkt mit Frischfleischtheke und Bäckerei Büsch
        [latitude] => 51.1178
        [longitude] => 6.77537
        [distance] => 0.18105522823916723
    )

[1] => Array
    (
        [id] => 2
        [name] => Autohaus Kopenhagen
        [description] => Peugeot Händler
        [latitude] => 51.1161
        [longitude] => 6.77481
        [distance] => 0.33650698548914737
    )

[2] => Array
    (
        [id] => 10
        [name] => Hallenbad Nievenheim
        [description] => Schwimmbad mit Sauna und Sonnenbänken, sowie kleinem Außenbereich
        [latitude] => 51.1211
        [longitude] => 6.77857
        [distance] => 0.38752806088549746
    )
)

现在我想从数组中的所有数组中完全删除距离键和值。它应该是这样的:

    Array
(
[0] => Array
    (
        [id] => 1
        [name] => Edeka Blaschek
        [description] => Lebensmittelmarkt mit Frischfleischtheke und Bäckerei Büsch
        [latitude] => 51.1178
        [longitude] => 6.77537
    )

[1] => Array
    (
        [id] => 2
        [name] => Autohaus Kopenhagen
        [description] => Peugeot Händler
        [latitude] => 51.1161
        [longitude] => 6.77481
    )

[2] => Array
    (
        [id] => 10
        [name] => Hallenbad Nievenheim
        [description] => Schwimmbad mit Sauna und Sonnenbänken, sowie kleinem Außenbereich
        [latitude] => 51.1211
        [longitude] => 6.77857
    )
)

我尝试过这里提到的解决方案:PHP - unset in a multidimensional array 但他们没有为我工作,我在这里做错了什么?可能很简单很抱歉,但我是PHP的新手。

编辑:这是我试过的代码:

foreach(array_keys($tempArray) as $key) {
   unset($tempArray[$key][5]);
}

而且:

foreach($tempArray as $key=>$val){
   unset($val[5]); 
}

$ tempArray是我想要更改的数组。

3 个答案:

答案 0 :(得分:2)

试试这个,

array_map(function($v){array_pop($v); return $v;}, $array);

注意,array_pop弹出数组的最后一个元素。如果距离不是最后一个键,则可以使用unset()代替

答案 1 :(得分:1)

   foreach ($mainArray as $key => $mainData){
    foreach ($subArray as $subData){ 
       if($mainData['distance'] == $subData['distance']){
        unset($mainArray[$key]); break; 
  }
   } 
     }

试试这种方式。 -

答案 2 :(得分:0)

在php中使用array_values()函数。我想它会起作用。