使用php从数组中删除特定元素

时间:2016-02-17 12:59:57

标签: php arrays

我有一个如下所示的数组

Array
    (
        [AllocationPool] => TEST do not USE
        [Quarter] => 2016-Q4
        [Segment] => Storage
        [Region] => 
        [SubRegion] => 
        [Country] => 
        [typeofrec] => 0
        [TotalAllocations] => 100
        [TotalTransfersOut] => 75
        [TotalTransfersIn] => 0
        [StartOfAllocation] => 25
        [ApprovedActivities] => 0
        [AvailableBalance] => 25
        [TotalApprovedClaims] => 0
        [Balance] => 25
        [TotalUnApprovedClaims] => 0
        [Exposure] => 25
    )

我需要从这个数组中删除一些元素并格式化为新结构。

格式化数组后我需要更改下面的结构

Array
    (
        [AllocationPool] => TEST do not USE
        [Quarter] => 2016-Q4
        [Segment] => Storage
        [Region] => 
        [SubRegion] => 
        [Country] => 
    )

php中是否有任何方法可以使用php删除数组中的某些元素?

6 个答案:

答案 0 :(得分:1)

使用unset()

取消设置数组的变量
unset($array[typeofrec]);
unset($array[TotalAllocations]);
unset($array[TotalTransfersOut]);
unset($array[TotalTransfersIn]);
unset($array[ApprovedActivities]);
unset($array[AvailableBalance]);
unset($array[TotalApprovedClaims]);
unset($array[Balance]);
unset($array[TotalUnApprovedClaims]);
unset($array[Exposure]);

答案 1 :(得分:0)

如果要从数组中删除特定元素,请使用 unset()

unset($array[typeofrec]);
unset($array[TotalAllocations]);
....

答案 2 :(得分:0)

使用array_search获取密钥并将其删除,如果找到则取消设置:

if (($key = array_search('strawberry', $array)) !== false) {
    unset($array[$key]); // This will remove the element
}

以下是其他一些想法PHP: How to remove specific element from an array?

答案 3 :(得分:0)

有许多方法可用于删除数组元素:unset()array_filterarray_reduce

一种可行的方法是:

$myArray = array_filter($myArray, function ($key) {
    return in_array($key, array('AllocationPool', 'Quarter', 'Segment', 'Region', 'SubRegion', 'Country'));
}, ARRAY_FILTER_USE_KEY);

答案 4 :(得分:0)

尝试每个键

  

取消设置($ arr [“key”])

http://php.net/manual/en/function.unset.php

假设您的数组是$ arr,请执行

  

取消设置($ arr [“TotalAllocations”]); ...

如果要保留一些连续值,可以使用slice()

  

$ output = array_slice($ input,0,6); //保留前6个值

答案 5 :(得分:0)

您可以查看Sub ComboBox1_Change() Dim rng As Range Dim x As Integer Dim y As Integer y = 8 For x = 751 To 1000 Step 1 If Me.ComboBox1.Value = Worksheets("Data").Cells(x, y - 1).Text Then Set rng = Worksheets("Data").Cells(x, y) Do Until y > 36 y = y + 2 Set rng = Application.Union(rng, Worksheets("Data").Cells(x, y)) Loop rng.Copy End If Next x End Sub http://php.net/manual/en/function.array-filter.php)。使用此功能,您可以从数组中过滤(删除)元素。如果只提供数组参数,该函数将从数组中删除所有等于array_filter($array, $callback, $flag)的值。如果你愿意,你可以提供一个回调函数来执行更复杂的过滤器,如果回调返回false,那么给定的项将从数组中过滤。