У меня есть следующий скрипт для приложения карт Google. Информация о конкретном месте отправляется через ajax в массив $array, который затем добавляется в $SESSION['infomarker']. Эта часть работает нормально. Но пользователь также должен иметь возможность удалить место (если он пожалеет о вводе).
Это обрабатывается функцией removeElementWithValue(), которая принимает значения lat и lng в качестве аргументов ($val1 и $val2 в этом примере скрипта). Затем массив, содержащий значения 'val1' и 'val2', исчезает, как и должно быть. Но когда я изменяю переменные $val1 и $val2 на «val3» и «val4», массив, содержащий «val1» и «val2», возвращается, а массив, содержащий «val3» и «val4», не устанавливается.
Я думал, что unset() «сбросил» рассматриваемый массив навсегда, или мне нужно сделать что-то еще?
<?php
session_start();
if(isset($_POST['lat']) && !empty($_POST['lat']) ) {
$array = array(
'titel' => $_POST['titel'],
'comment' => $_POST['comment'],
'lat' => $_POST['lat'],
'lng' => $_POST['lng']
);
$_SESSION['infomarker'][] = $array;
}
$val1 = 'val1';
$val2 = 'val2';
$newarray = removeElementWithValue($_SESSION['infomarker'], "titel", "comment", $val1, $val2);
function removeElementWithValue($array, $key1, $key2, $value1, $value2){
foreach($array as $subKey => $subArray){
if($subArray[$key1] == $value1) {
if($subArray[$key2] == $value2)
unset($array[$subKey]);
}
}
return $array;
}
print_r($newarray);