Удалить элементы из массива
У меня есть массив, который отформатирован следующим образом:
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>';
?>