web-dev
29.09.2009 - 16:20
Привет! У меня такая проблема, запись достаётся из базы для редактирования, в ней есть поле tags (теги), в нём строка с тегами разделённых пробелом с запятой. После редактирования скрипт делающий UPDATE этой записи получает помимо всего прочего две переменные $new_tags (это то что ввёл пользователь) и $old_tags (старая строчка тегов из базы). Пытаюсь придумать как бы мне из всего этого получить два массива с удалёнными и новыми тегами.
Напишу пример чтоб было всем понятно:
PHP |
$old_tags[]=array('PHP', 'CSS', 'MYSQL', 'HTML'); $new_tags[]=array('PHP', 'CSS', 'MYSQL', 'JAVASCRIPT'); |
Вот из этого хотелось бы получить два массива:
$add с элементом 'JAVASCRIPT' и $del с элементом 'HTML'
Спустя 1 час, 11 минут, 42 секунды (29.09.2009 - 16:31) glock18 написал(а):
что-то типа этого
PHP |
$tags = array_intersect($new_tags, $old_tags); $add = $new_tags; $del = $old_tags; $passThrough = array('del', 'add'); foreach ($tags as $tag) { foreach ($passThrough as $arrayName) { if (($pos = array_search($tag, ${$arrayName})) !== false) { unset(${$arrayName}[$pos]; } } }
echo '<pre>'; echo 'Tags that are presented in both $new_tags and $old_tags'; print_r($tags); echo 'Tags that are added'; print_r($add); echo 'Tags that are removed'; print_r($del); echo '</pre>'; |
Спустя 1 час, 34 минуты, 25 секунд (29.09.2009 - 18:06) web-dev написал(а):
Спасибо тебе большое!
_____________
IT - это такая область, что приходится постоянно бежать вперед, чтобы оставаться на месте.