$sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < :calories AND colour LIKE :colour'); $sth->bindParam(':calories', $calories, PDO::PARAM_INT); $sth->bindValue(':colour', "%{$colour}%");
Кстати, такой подход, позволяет с пониманием относиться к этому:
$ python3Python 3.6.8 (default, Apr 2 2020, 13:34:55) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linuxType "help", "copyright", "credits" or "license" for more information.>>> o={'sd':1}>>> print(o['dd'])Traceback (most recent call last): File "<stdin>", line 1, in <module>KeyError: 'dd'>>> print(o.get('dd'))None>>> print(o.get('dd',{})){}
стандартный синтаксис, а не какой-то придуманный именно вами и не используемый нигде более в языке.
Когда вы пишете какой-то код, надо еще и понимать, что за вами его будет кто-то разбирать, поэтому использование таких вот конструкций
недопустимо
Недопустимо кому? Это всего лишь функция, облегчающая доступ к элементам массива/объекта. Не более того. Всяких разных функции/классов в любом проекте может быть от много до очень много. И разбирать их приходится, хочется того или нет.
Что касается $array[0]['gz']
print($o['3a']);#PHP Notice: Undefined index: 3a in /var/web/d.php on line 21
А у меня бзик🤪 - все ошибки вызывают Exception, просто никаких варнинго-нотисов не люблю. И предпочитаю приложить немного усилий, чтобы исключить их
Категорически неверный подход: Прилетел 10000 таких:
$o = json_decode('[{"gz":["qeqwe","qeqeqe", 20]},{"gz0":["qeqwe",{"aa":"bb"}]}]');$oo = [];for($i=0;$i<10000;$i++){ $oo[$i] = $o;}$t = microtime(1);$oo = json_decode(json_encode($oo),TRUE); echo (microtime(1) - $t)*1000, 'ms';$t = microtime(1);$ns = '557.0.gz.2';echo "\nResult for key '{$ns}': \n", var_dump(_n($oo, $ns)), "\n";echo (microtime(1) - $t)*1000, 'ms', "\n";
57.188987731934msResult for key '557.0.gz.2': int(20)0.051975250244141ms
57 миллисек это очень много, а еще и на memory_get_usage/memory_get_peak_usage любопытно было бы посмотреть. Ну, чтобы вывод о том кто индокодит
Вот это:
$array = json_decode(json_encode($mixed),TRUE);
зло. Никогда так не делайте
Что то типа того:
<?phpfunction _a( string $k, $o=null, $def=null ){ if(is_object($o)) { return property_exists($o,$k) ? $o->$k : $def; } elseif (is_array($o)){ return array_key_exists($k,$o) ? $o[$k] : $def; } else return $def;}function _n( $o, string $k, $def='То, что никогда не встретится в ваших массивах/объектах'){ $k = explode('.', $k); foreach($k as $v){ $o = is_iterable($o) || $o instanceof stdClass ? _a($v, $o, $def) : $o; if($def===$o) return $def; } return $o;}$o = json_decode('[{"gz":["qeqwe","qeqeqe"]},{"gz0":["qeqwe",{"aa":"bb"}]}]');$ns = '0.gz';echo "\nResult for key '{$ns}': \n", var_dump(_n($o, $ns)), "\n";
Немного строчек кода позволят обращаться к масссиву/объекту в стиле: '0.gz'
$ php -f /var/web/d.phpResult for key '1.gz0.1.aa.00': string(101) "То, что никогда не встретится в ваших массивах/объектах"$ php -f /var/web/d.phpResult for key '1.gz0.1.aa': string(2) "bb"$ php -f /var/web/d.phpResult for key '0.gz': array(2) { [0]=> string(5) "qeqwe" [1]=> string(6) "qeqeqe"}
Т.е на скрипт вы отводите роль получить xml, т.к. в старт посте
и отдать в каком то формате вашей проге. Все остальное - лемматизация, алгоритм чтобы получилось
вы сделаете на Delphi.
Тогда 2 часа работы на php скрипт с хорошим запасом (оценочное суждение). Или самостоятельно. Потребуется подсказка и почитать про следующие функции php: file_get_contents вместе c stream_context_create если post, simplexml_load_string , foreach, isset, is_array, preg_match_all, ну и json_encode если в json
Да. xml.yandex отдаст данные в которых есть такая конструкция, hlword ваши подсветки, остальное и так понятно.
<doc id="ZF72ED445C40118F5"> <relevance /> <url> https://spb.cian.ru/kupit-kvartiru-studiu/ </url> <domain> spb.cian.ru </domain> <title> 9 591 объявление - Купить <hlword>квартиру</hlword> - <hlword>студию</hlword> в <hlword>Санкт</hlword> - <hlword>Петербурге</hlword> ... </title> <modtime> 20150626T035330 </modtime> <size> 6949 </size> <charset> utf-8 </charset> <passages> <passage> Продается <hlword>квартира</hlword> - <hlword>студия</hlword>со всей необходимой техникой и мебелью в ЖК комфорт-класса Академ-Парк. </passage> <passage> Продается <hlword>квартира</hlword> - <hlword>студия</hlword> в <hlword>Санкт</hlword> - <hlword>Петербурге</hlword> . </passage> </passages> <properties> <_PassagesType> 0 </_PassagesType> <lang> ru </lang> </properties> <mime-type> text/html </mime-type> <saved-copy-url> https://hghltd.yandex.net/yandbtm?**** </saved-copy-url> </doc>
"читать еще" это на выдаче
А как, без лемматизации, получите это:
Если на своей стороне , то зачем вам скрипт?
А если что то похожее на приведенные Вами сервисы, то - алгоритм?😕
У Арсенкина кол-во повторений фигурирует, но непонятно какое. Так же не факт что это из только топа Я-хмл. От туда (Ya-XML не старше 10 дней) как то так может получиться (из топ100 правда):
(лемматизированно и отсортированно по частотности). Понятно, что выше убран город и слова из запроса
[2] => Array ( [студия] => Array ( [cnt] => 263 [stemm_type] => mystem [val] => студию,студии,студий,студия,студиях ) [квартира] => Array ( [cnt] => 260 [stemm_type] => mystem [val] => квартиру,квартира,квартиры,квартир,квартире,квартирах ) [москва] => Array ( [cnt] => 170 [stemm_type] => mystem [val] => москве,москва,москвы ) [купить] => Array ( [cnt] => 84 [stemm_type] => mystem [val] => купить,куплю ) [продажа] => Array ( [cnt] => 59 [stemm_type] => mystem [val] => продажа,продаже,продажи,продажу ) [объявление] => Array ( [cnt] => 45 [stemm_type] => mystem [val] => объявления,объявлений,объявление ) [новостройка] => Array ( [cnt] => 40 [stemm_type] => mystem [val] => новостройках,новостройки,новостройке,новостройка ) [цена] => Array ( [cnt] => 29 [stemm_type] => mystem [val] => цена,цены,цене ) [посредник] => Array ( [cnt] => 22 [stemm_type] => mystem [val] => посредников ) [фото] => Array ( [cnt] => 19 [stemm_type] => mystem [val] => фото )
Тут тупо кол-во в title + passeges. Всего слов в сниппетах топ100: 1944, лемм 415
А может по другому:
[yandex_top100_snippet] => Array ( [студия] => 11.9010479015695 [квартира] => 11.8787948513382 [купить] => 9.7112053874862 [продажа] => 9.0604644070352 [новостройка] => 7.3689215346173 [цена] => 6.8222971033231 [недвижимость] => 5.8105921682406 [москва] => 5.2526361124329 [фото] => 5.1495422301596 [дизайн] => 5.0827782588556 [рубль] => 5.0618641622129 [посредник] => 5.0459643290706 [объявление] => 4.9952270243464 [жилье] => 4.9826132209754 [avito] => 4.8936424831073 [интерьер] => 4.8007520618438 [новый] => 4.800727931322 [дом] => 4.8006110998427 [вторичный] => 4.703072409535 [снимать] => 4.4924902843706 [комната] => 4.4924530563238 [метро] => 4.3780322356191 ...... [недорого] => 3.9896972687112 ...... [площадь] => 3.841516559279 ...... [жилой] => 3.1061402539477 ....... [планировка] => 2.8705060519118 ....
Тут цифра результат функции от частотности отдельно в title, отдельно в passage, отдельно вхождений в hlword (подсветки) и кол-ва пересечений леммы в документах топ100. 4 слагаемых с коэфф. для усиления влияния каких то параметров. В зависимости от которых, могут быть варианты сортировки:)
====
А подсветки? Можно не париться;) Повторяю, там будут слова запроса и город в котором ведется поиск. + транслит слов запроса и города, сокращения/полное значение (метро-метрополитен) слов запроса и города. Что наглядно видно у Арсенкина
😮 Включили? А не, кроме города и слов из запроса нет ничего :(---------- Добавлено 02.07.2018 в 10:55 ----------Зы Парсить hlword практического смысла сейчас нет. Ибо там слова запроса + город. Ну и что то типа метрополитен для метро подсветится. Все;(
Не;) Наоборот. Намекаю, что они, модели, есть разные. Как и то, что пользовательская активность = F(тип сайта, тематика, целевая аудитория, куча чего то еще). И утверждать, что отсутствие обсуждений/соц.активности - гарантия ненужности сайта/документа, как минимум, опрометчиво. Равно, как и присутствие оных не гарантирует нужность сайта/документа.
Кучу документов, на разных сайтах ежедневно смотрю, никогда не комментирую и в группы, не то, что не особо, а вообще никогда. Что делаю не так?
Или у вас есть метрика, что обязательное условие нужности сайта/документа - на каждого 100-го юзера обязательно 1 коммент, а каждый 1000-й непременно вступает в группу?
Зы, сайт про который пишите вообще не смотрел, но осуждаю на всякий случай :)