Google マップ アプリケーション用の次のスクリプトがあります。特定の場所に関する情報は、ajax を介して $array 配列に送信され、$SESSION['infomarker'] に追加されます。この部分は正常に動作します。ただし、ユーザーは場所を削除することもできる必要があります (入力を後悔した場合)。
これは、場所 lat と lng を引数として取る removeElementWithValue() 関数によって処理されます (このサンプル スクリプトでは $val1 と $val2)。「val1」と「val2」の値を含む配列は、本来のように消えます。しかし、$val1 および $val2 変数を 'val3' および 'val4' に変更すると、'val3' および 'val4' を含む配列が設定解除されている間に、'val1' および 'val2' を含む配列が返されます。
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);