Не получается удалить элемент из двумерного ассоциативного массива (PHP)
Вот код:
<?php
function getSizeForLimit($a, $b){
foreach ($a as $array) {
foreach ($array as $key => $value) {
if ($key == 's' && $value > $b) {
unset($array[$key]);
}
}
}
return $a;
}
$a = array(array("a" => 1, "b" => 2, "c" => 3, "s" => 4.5), array("a" => 4, "b" => 5, "c" => 6, "s" => 27));
$b = 10;
$c = getSizeForLimit($a, $b);
print_r($c);
Не получается удалить двумерный массив содержащий значение 27 под ключом "s". Условный оператор срабатывает на ура, но метод unset не удаляет массив. Пожалуйста, объясните какую ошибку я допустил?
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
потому что в foreach передаётся копия массива, а не ссылка на него. Поэтому выходов тут миллион. Самый простой и против которого многие будут: добавить на него именно ссылку
foreach ($a as &$array) {
^------- ТУТ
второй - делать проход через for
третий - вначале исходный массив положить в $arrayCopy и пробегаться по нему, а удаляться уже из исходного.
и ещё куча способов
Удалить именно массив можно так:
foreach ($a as $key => $array) {
foreach ($array as $key2 => $value) {
if ($key2 == 's' && $value > $b) {
unset($a[$key]);
}
}
}