[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как убрать 1 конкретное значение из массива
kuzroman
у меня есть такое условие

	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)
Цитата (Гость_Michael @ 1.12.2010 - 11:24)
array_diff

Если правильно понял то должно получиться что то вроде...

$_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'] не исчезает

вот мой пример:

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;
echo empty($key);
на экране будет 1, т.е. истина. Ноль для empty() есть пусто. Пример
$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
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.