Mad_Man

Mad_Man
Рейтинг
162
Регистрация
10.11.2008
Интересы
Рыбалка
Born USSR

grep -Fvx -f small.txt big.txt > result.txt

$h = array('a', 'b', 'f', 'r', 'b', 'v', 'r', 'b', 't', 'a');
$n = array('a', 'b');

$result = array_erase($n, $h);


function array_erase($needle, $haystack, $count = null)
{
if ($count === null)
{
$count = array_count($needle, $haystack);
}

if (!$count)
{
return $haystack;
}


$result = $haystack;

foreach ($needle as $item)
{
$index = array_keys($result, $item);

for ($i = 0; $i < $count; $i++)
{
unset($result[$index[$i]]);
}
}

return $result;
}

function array_count($needle, $haystack)
{
$count = INF;
$array = array_count_values($haystack);

foreach ($needle as $item)
{
if (!isset($array[$item]))
{
return 0;
}

$count = min($count, $array[$item]);
}

return (int) $count;
}

Граждане, вы перегрелись.

Подсчёт делается элементарно

$h = array('a', 'b', 'f', 'r', 'b', 'v', 'r', 'b', 't', 'a');
$n = array('a', 'b');

$count = array_count($n, $h);

function array_count($needle, $haystack)
{
$count = INF;
$array = array_count_values($haystack);

foreach ($needle as $item)
{
if (!isset($array[$item]))
{
return 0;
}

$count = min($count, $array[$item]);
}

return (int) $count;
}

Самый простой вариант в случае строгого порядка следования элементов и перегретой на жаре головы - это собрать массив в строку (CSV или схожее если размер элементов динамический), после чего рассматривать полученное как строку, производя поиск и замену строковыми функциями.

postavkin:
Вот это помогло
$spessore = str_replace('\\', '\\\\', $spessore); 

Вы безнадёжны.

Боги, да сайт же слоупок. И на морде крутится UTF-8, обрезанный побайтово с несчастным "�". Да и сам сайт родом из 2000-х. Да и кривое поделие рассыпается на глазах: http://nashost.net.ua/ru/nam-odin-mecaz/

Вы либо прикалываетесь, либо пытаетесь предоставлять услуги, в которых ни на сантиметр не смыслите.

postavkin:
почему то всё равно из 8\9 получается 89

Потому что mysqli_real_escape_string() принимает два параметра, первый из которых - соединение с базой. И это помимо того, что вам подсунули mysqli_* в мешанину mysql_*. Вы бы знали это если бы умели читать и не копировали в код функции, действий которых вы не знаете. Повторюсь: почитайте матчасть об экранировании, либо воспользуйтесь кодом, предоставленным выше.

umka:
Интересно посмотреть, как в той же транскрипции будет выглядеть запрос типа

INSERT INTO pf_cache SELECT e.id eid, DATE_FORMAT(e.date,'%d.%m.%Y'), DATE_FORMAT(e.date_time,'%d.%m %H:%i'), e.name, e.descr_short, e.img, e.descr, e.guests, IF(eg.person_user_id,1,0), COUNT(pf.user_id), p.name, p.rating, p.address, p.types, co.en, IF(co.ru!='', co.ru, co.en), ci.en, IF(ci.ru!='', ci.ru, ci.en), IF(u.url!='',u.url,u.id) FROM `events` e LEFT JOIN events_guests eg ON (eg.event_id=e.id AND eg.person_user_id=123), places p, events_guests eg2, people_friends pf, countries co, cities ci, users u WHERE e.date_time>NOW() AND eg2.event_id = e.id AND pf.friend_user_id = eg2.person_user_id AND p.user_id=e.place_user_id AND p.city_id=777 AND ci.id=777 AND co.id=7 AND p.country_id=7 AND co.id=7 AND ci.id=p.city_id AND co.id=p.country_id AND ci.id=p.city_id AND u.id=p.user_id AND u.status=1 GROUP BY e.id ORDER BY e.date_time


$database = new database();
$database->query("INSERT INTO pf_cache SELECT e.id eid, DATE_FORMAT(e.date,'%d.%m.%Y'), DATE_FORMAT(e.date_time,'%d.%m %H:%i'), e.name, e.descr_short, e.img, e.descr, e.guests, IF(eg.person_user_id,1,0), COUNT(pf.user_id), p.name, p.rating, p.address, p.types, co.en, IF(co.ru!='', co.ru, co.en), ci.en, IF(ci.ru!='', ci.ru, ci.en), IF(u.url!='',u.url,u.id) FROM `events` e LEFT JOIN events_guests eg ON (eg.event_id=e.id AND eg.person_user_id=123), places p, events_guests eg2, people_friends pf, countries co, cities ci, users u WHERE e.date_time>NOW() AND eg2.event_id = e.id AND pf.friend_user_id = eg2.person_user_id AND p.user_id=e.place_user_id AND p.city_id=777 AND ci.id=777 AND co.id=7 AND p.country_id=7 AND co.id=7 AND ci.id=p.city_id AND co.id=p.country_id AND ci.id=p.city_id AND u.id=p.user_id AND u.status=1 GROUP BY e.id ORDER BY e.date_time");

Не вижу совершенно никаких проблем. Особенно, если уделить те же пару минут немногочисленным сорцам и увидеть, что все *query() шаблонизаторы просто собирают SQL, который в итоге так или иначе всё равно окажется у database().

Ну так в чём проблема?


$result = array_combine(array_merge(array_keys($my_array2), array_values($my_array2)), array_values($my_array));
postavkin:
Спасибо, а какова цель переходить на то что Вы написали выше? Т.е. почему не стоит пользоваться mysql_* ?

Выше - реализация CRUD на mysqli без тупых SQL инъекций. Почему не стоит юзать mysql_* написано в оф. документации, если вы удосужитесь взглянуть на неё.

Всего: 4397