2016-02-17 5 views
0

Я хочу удалить индекс цены из каждого массива.Использование цикла foreach для удаления последнего элемента из ассоциативного массива

Вот пример кода:

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']); 
} 
+0

удалите '$ withOutPrice [] =' бит. Функция unset() ничего не возвращает. –

+0

Мне нужен тот же массив без элемента цены. как я получаю остальную часть элементов @ FranzGleichmann – hmamun

+0

Это напрямую изменяет ваш входной массив (передается по ссылке) –

ответ

1

unset не возвращает никакого значения (это языковая конструкция, а не функции), вы должны сделать это следующим образом:

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

(y). – hmamun

1

Ответ Tomas.lang отлично работает, если вы знаете ключ последнего индекса. Однако, если вы не знаете имя последнего ключа можно использовать следующее:

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

Вы уже получили свои ответы относительно вашего цикла Еогеаспа.
Итак, позвольте мне дать вам другой ответ, используя array_map и anonymous 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); 
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 ключ удаляется.

Надеюсь, это поможет.