使用foreach循环从关联数组中删除最后一个元素

时间:2016-02-17 14:23:37

标签: php foreach associative-array

我想从每个数组中删除价格指数。

以下是示例代码:

Array([0] => Array
    (
        [player_id] => 108
        [trnmnt_team_id] => 1
        [player_type] => 1
        [user_team_id] => 11
        [user_id] => 4
        [price] => 10.00
    )
[1] => Array
    (
        [player_id] => 151
        [trnmnt_team_id] => 2
        [player_type] => 1
        [user_team_id] => 11
        [user_id] => 4
        [price] => 10.00
    )
)

我尝试删除以下方式,但它显示了意外的'unset' (T_UNSET)

foreach ($mergeAllType as $key => $value) {
    $price=$value;
    $withOutPrice[]=unset($price['price']);
}

4 个答案:

答案 0 :(得分:1)

unset不会返回任何值(它的语言结构,而不是函数),您必须按照以下方式执行:

unset($price['price']);
$withOutPrice[] = $price;

答案 1 :(得分:1)

如果你知道最后一个索引的密钥,Tomas.lang的答案就可以了。但是,如果您不知道最后一个密钥的名称,则可以使用以下内容:

unset(end($price));
$withOutPrice = $price;

答案 2 :(得分:0)

你已经得到了关于foreach循环的答案 所以,让我给你一个不同的答案,使用array_mapanonymous function; - )

<?php
$src = array(
    array (
        'player_id' => 108,
        'trnmnt_team_id' => 1,
        'player_type' => 1,
        'user_team_id' => 11,
        'user_id' => 4,
        'price' => 10.00,
    ),
    array (
        'player_id' => 151,
        'trnmnt_team_id' => 2,
        'player_type' => 1,
        'user_team_id' => 11,
        'user_id' => 4,
        'price' => 10.00,
    ),
);

$withOutPrice = array_map(
    function($e) {
        unset($e['price']);
        return $e;
    },
    $src
);

var_export($withOutPrice);

答案 3 :(得分:0)

如果您希望unset()关闭数组中的price个关键字,可以使用array_walk()

array_walk($arr, function(&$array) {
    unset($array['price']);
});

只需将$arr替换为您的数组名称,即$teams

如果你想拥有两个数组,一个有价格,一个没有价格,你可以在做上述之前复制数组;即。

$teams = <DATASOURCE>
$teamsWithoutPrice = $teams;

array_walk($teamsWithoutPrice, function(&$array) {
    unset($array['price']);
});

然后,如果您打印出$teamsWithoutPrice数组,则会删除price密钥。

希望它有所帮助。