if (array_search($_REQUEST['iduni'], $_SESSION['arr_sravnenie']) === false)
{ $_SESSION['arr_sravnenie'][] = $_REQUEST['iduni']; }
собственно проверяем есть ли в массиве $_SESSION['arr_sravnenie']
пришедшая из POST переменная $_REQUEST['iduni'] и если нет то в массив добавляем эту переменную.
Подскажите а как правильно вычесть эту переменную из массива, если она в нем уже есть?
Спустя 6 минут, 9 секунд (1.12.2010 - 14:24) Гость_Michael написал(а):
array_diff
Спустя 23 минуты, 50 секунд (1.12.2010 - 14:48) kuzroman написал(а):
Цитата (Гость_Michael @ 1.12.2010 - 11:24) |
array_diff |
Если правильно понял то должно получиться что то вроде...
$_SESSION['arr_sravnenie'] = array_diff ($_SESSION['arr_sravnenie'] , $_REQUEST['iduni'] ) ;
да?
Спустя 18 минут, 20 секунд (1.12.2010 - 15:06) Гость_Michael написал(а):
Цитата (kuzroman @ 1.12.2010 - 11:48) | ||
Если правильно понял то должно получиться что то вроде... $_SESSION['arr_sravnenie'] = array_diff ($_SESSION['arr_sravnenie'] , $_REQUEST['iduni'] ) ; да? |
а проверить - религия не позволяет?
Спустя 34 минуты, 12 секунд (1.12.2010 - 15:40) kuzroman написал(а):
Здравый смысл)) Ну все равно спасибо))
Спустя 18 часов, 21 минута, 35 секунд (2.12.2010 - 10:02) linker написал(а):
Вот так будет правильно
if (($key = array_search($_REQUEST['iduni'], $_SESSION['arr_sravnenie'])) === false)А в вашем случае
$_SESSION['arr_sravnenie'][] = $_REQUEST['iduni'];
else
unset($_SESSION['arr_sravnenie'][$key]);
array_diff ($_SESSION['arr_sravnenie'] , $_REQUEST['iduni'] )будет ошибка, т.к. array_diff() работает с массивами, а $_REQUEST['iduni'] не массив.
Спустя 1 час, 7 минут, 50 секунд (2.12.2010 - 11:10) collapse написал(а):
Так же можно использовать array_splice
Спустя 47 минут, 14 секунд (2.12.2010 - 11:57) linker написал(а):
Накой? Используется array_search() результатом будет либо значение ключа, либо false. А зная ключ, элемент массива удаляется через unset(), фигли извращаться.
Спустя 5 часов, 14 минут, 43 секунды (2.12.2010 - 17:12) kuzroman написал(а):
Уважаемый linker , спасибо за ответ, а почему вы пишете === вместо == ?
Спустя 17 часов, 17 минут, 46 секунд (3.12.2010 - 10:30) linker написал(а):
Все просто, == просто сравнивает значения (может происходить неявное преобразование типов самим PHP), а === не просто сравнивает значения, но еще делает сравнение их типов. А теперь к конкретному примеру. Булевскому значению TRUE соответствует любое не нулевое, не пустое значение и не NULL. Булевскому значению FALSE соответствуют: 0, пусто, NULL. А теперь смотри, допустим, что искомое значение в массиве находится в элементе, которому соответствует ключ 0 (нулевой индекс). Т.е. функция array_search() возвращает значение ключа равное нулю. Если это значение сравнить с FALSE с помощью ==, то это сравнение будет истиной, а значит твоя программа подумает, что искомого значения нет в массиве и добавит его (хотя оно есть под нулевым индексом). Но если сравнить ноль с FALSE с помощью ===, то результатом будет ложь и твоя программа поймет, что искомое значение уже есть в массиве и его нужно удалить.
Спустя 3 часа, 38 минут, 40 секунд (3.12.2010 - 14:08) kuzroman написал(а):
Странно но конструкция unset($_SESSION['arr_sravnenie'][$key]); не работает
$key делал и переменной и массивом все равно из $_SESSION['arr_sravnenie'] не исчезает
вот мой пример:
$key делал и переменной и массивом все равно из $_SESSION['arr_sravnenie'] не исчезает
вот мой пример:
if (!empty($_GET['id']))
{ $key = $_GET['id'] ;
unset($_SESSION['arr_sravnenie'][$key]);
print_r ($_SESSION['arr_sravnenie']);
}
Спустя 6 минут, 7 секунд (3.12.2010 - 14:14) linker написал(а):
$key = 0;на экране будет 1, т.е. истина. Ноль для empty() есть пусто. Пример
echo empty($key);
$a = array(1,2,3);все работает.
unset($a[1]);
print_r($a);
Спустя 12 минут, 38 секунд (3.12.2010 - 14:27) kuzroman написал(а):
Спасибо, я понял. Но сделал все равно по своему =))
if (!empty($_GET['id']))
{
$key = array($_GET['id']) ;
$_SESSION['arr_sravnenie'] = array_diff ($_SESSION['arr_sravnenie'] , $key ) ;
}
Спустя 18 минут, 7 секунд (3.12.2010 - 14:45) linker написал(а):
Как знаешь.
_____________
kuzroman@list.ru