Удалить элементы из массива

У меня есть массив, который отформатирован следующим образом:

Array
(
    [0] => Array
        (
            [id] => 1
            [LASTNAME] => Name
            [FIRSTNAME] => Name
    )
    [1] => Array
        (
            [id] => 2
            [LASTNAME] => Name
            [FIRSTNAME] => Name
    )

и т. д. Я хочу удалить фамилию и другие элементы из каждого раздела массива.

Я попробовал следующий код, но безрезультатно.

foreach($s as $key => $object) {

    foreach($object as $key=>$value) {

            if ($key == "LASTNAME") {
                unset( $s['LASTNAME'] );
                }
            }
        }

Есть идеи, что я делаю не так? Заранее спасибо.

3 ответа

Попробуй это:

foreach ($s as &$object) {
    unset($object['LASTNAME']);
}

ваша проблема в том, что вы работаете с копиями, & даст вам ссылку, также, как показано в моем примере, вам не нужно перебирать массив, чтобы проверить, есть ли конкретный ключ внутри, просто удалите его - unset не возникнет ни одной ошибки, если ее там нет.


даже в вашем примере вы пытаетесь удалить 'LASTNAME' от $s вместо своего ребенка, но в любом случае, просто попробуйте мой ответ, и он должен работать для вас;)

Вы сбрасываете с неправильного массива.

Сохранение текущего ключа для каждого цикла поможет:

foreach($s as $key1 => $object) {
    foreach($object as $key2=>$value) {
        if ($key2 == "LASTNAME") {
            unset( $s[$key1][$key2] );
        }
    }
}
<?php 
$array = Array(
    0 => Array(
            'id' => 1,
            'LASTNAME' => 'Name',
            'FIRSTNAME' => 'Name'
    ),
    1 => Array(
            'id' => 2,
            'LASTNAME' => 'Name',
            'FIRSTNAME' => 'Name'
    )
);

foreach($array as $key=>$value){
    unset($array[$key]['LASTNAME']);
}

echo '<pre>',print_r($array),'</pre>';
?>
Другие вопросы по тегам