@phpclubru

Страница 385 из 956
Sparrow
10.11.2017
07:31:39
$result = $connect_db->query('SELECT properties_key, properties_properties_name FROM country'); function countryCode() { foreach ($result as $row) { echo $row['properties_properties_name'] . "<br>"; } } countryCode(); ребята ругается на foreach ($result as $row) { как сделать для неё область видимости?( ничо не понял

Andrei
10.11.2017
07:33:40
function countryCode(&$result) {.... } countryCode($result);

Sparrow
10.11.2017
07:38:01
а можно чтобы countryCode() был пуст а как то назначить $result глобальным

Alexey
10.11.2017
07:38:38
так делать нельзя

Google
Alexey
10.11.2017
07:39:22
Andrey
10.11.2017
07:39:41
https://m.habrahabr.ru/post/147620/

Andrei
10.11.2017
07:40:13
зачем result по ссылке?
в общем и целом так точно будет пердена не копия, а иначе зависит от версии php

Alexey
10.11.2017
07:41:53
Andrei
10.11.2017
07:44:25
а зачем иметь в худшем случае две копии одних и тех же данных? тем более это выборка без ограничений.

и надеятся на то что хватит memory_limit

Alexey
10.11.2017
07:48:25
затем, что передача по ссылке несет за собой больше побочных эффектов, чем это ожидается в коде

https://ru.hexlet.io/blog/posts/mp

Andrei
10.11.2017
07:52:12
обязательно посомтрю, но смущает момент, что передача по ссылке один их главных компонентов хайлоад, начиная с с++11 да же специальный термин вввели rvalue.

что подводит к мысли, что надо учиться пользоваться и понимать, когда и зачем надо использовать передачу по ссылке, а не надеятся на зависимость от версии и gc

Alexey
10.11.2017
07:55:48
ну мы ведь не про C++11, а про PHP :) В принципе, существует негласное правило, что, если нужно передать по ссылке - передавай объект. Иначе только копии.

Леонид
10.11.2017
07:57:18
Объекты надо использовать в основном.

Google
Andrei
10.11.2017
08:04:19
языкозависимое утверждение :) php бхект передаст по ссылке, в foreach, создаст копию автоматом при изменении значения

Sparrow
10.11.2017
08:06:01
$result = $connect_db->query('SELECT properties_key, properties_properties_name FROM country'); function countryCode($result) { foreach ($result as $row) { echo "<option value=" .$row['properties_key']. ">" . $row['properties_properties_name'] . "</option>"; } } ребята у меня щас в базе country хранится 3тыс.обьектов при загрузке скрипт грузиться очень долго)) как решаются проблемы в таких случаях?

всё грузит сразу

либо такое не делается в selectах а поиск с выпадающим списком делатЬ?

Dmitry
10.11.2017
08:11:41
хайлоад головного мозга, хех

Andrey
10.11.2017
08:12:19
Стран же всего 251 судя по вики

Sparrow
10.11.2017
08:12:34
города

)

Andrei
10.11.2017
08:15:02
хайлоад головного мозга, хех
не в хайлоаде дела, а в организации своего кода и понимании как работает, зачем и что использовать. можно ведь написать линейный код в котором натаскать из базы милиооны строк, а потом пердавать их копии

https://ru.hexlet.io/blog/posts/mp
есть много сомнительных утверждений

Sparrow
10.11.2017
08:18:07
у меня щас при загрузке индекса сразу подгружает все города мира)

в select

Andrei
10.11.2017
08:19:43
зачем, сделайте как два поля в форме, 1 - страна 2 - город ajax - ом при выборе страны, подгрузите в select города

Sparrow
10.11.2017
08:20:29
я сейчас оставил только выбор городов мне нужны только города

но они грузятся сразу все

при загрузке

Google
Sparrow
10.11.2017
08:22:17
cow?

мой пример думаю нада решать поиском) т.к при выборе селект и вообще при загрузке сайта подгружаются все города мира

Dmitry
10.11.2017
08:24:48
copy on write, т.е. реально копия массива, передаваемого как аргумент функции, будет сделана не в момент передачи, а при первом измененеии массива

Sparrow
10.11.2017
08:24:49
и виснет всё

Andrei
10.11.2017
08:35:44
можно примерчик?
[php] class Foo { ... } function a(Foo $obj) {...} - будет передана ссылка [c++] class Foo { ... } void a(Foo obj) { ... } будет вызван копирующий конструктор, который создаст объект и скопирует свойства

Alexey
10.11.2017
08:37:58
а, это было в контексте плюсов, окей, спасибо

Dmitry
10.11.2017
08:39:45
и у рыб могут быть блохи ;)

я об этом написал, что это версионно зависимая модель
боюсь даже предположить, в какой версии пхп нет cow...

Andrei
10.11.2017
08:45:24
Dmitry
10.11.2017
08:51:51
$value = array('sdfsf'); function foo($newvalue) { debug_zval_dump($newvalue); } foo($value); 4.3.0 версия array(1) refcount(4){ [0]=> string(5) "sdfsf" refcount(1) }

https://3v4l.org/ABFSq

Pavel
10.11.2017
08:54:46
Я так понял в разговорах что есть несколько подтекстов при обсуждении cow

Dmitry
10.11.2017
08:55:33
ну про массив как параметр речь шла вроде

Pavel
10.11.2017
08:55:35
На самом деле значение может не скопироваться даже если мы явно его скопировали. Так что есть внешний cow и "внутренний"

Я как то экспериментировал с большими массивами и увидел что даже при явном копировании занимаемая память не удваивается

То есть на низком уровне пхп упорно продолжает экономить байты

Так что тут нужно много уточнений

Google
Andrei
10.11.2017
08:59:24
да ребят, ну ведь дело не в движке php, а в понимании когда и зачем передавать по ссылке воспринимайте это как стиль\соглашение

Dmitry
10.11.2017
09:00:07
а что такое явное копирование?

Pavel
10.11.2017
09:26:25
$b = clone $a

Ну для массивов это просто $a1 = $a2; $a1[42] = 146;

В этом случае в $a1 все равно могут оставаться куски ссылок на $a2

Dmitry
10.11.2017
09:31:40
ну присваивание cow, да ;)

Admin
ERROR: S client not available

Andrei
10.11.2017
09:40:35
https://3v4l.org/ABFSq
справиделиво для array, для объектов нет

Dmitry
10.11.2017
09:41:23
спасибо КО

Andrei
10.11.2017
09:42:34
спасибо КО
всегда пожалуйста, но думаю основной посыл вы не много не поняли

Dmitry
10.11.2017
09:44:30
основной посыл, что в пхп5 стали объекты всегда по ссылке передавать? ;)

Andrei
10.11.2017
09:46:20
эммм, ну похоже вы вообще не поняли :)

Vitaliy Nameless
10.11.2017
09:48:09
наркомания какая-то

Dmitry
10.11.2017
09:49:09
эммм, ну похоже вы вообще не поняли :)
ну учитесь доносить мысли ;)

Andrei
10.11.2017
09:50:31
странный посыл, если уж такими терминами оперировать, то учитесть читать :)

Dmitry
10.11.2017
09:52:38
читать я умею, спасибо. А вот понимать мысли людей, которые их не умеют высказать словами - нет, увы ;) но это не моя проблема ;)

Andrei
10.11.2017
09:56:08
не самое важное уметь читать, вожно понимать прочитанное, вас ни кто не заставляет понимать мысли, достаточно вдуматься в смысл написанного, ну ил пройти мимо, ну а так да

Dmitry
10.11.2017
09:57:28
панельные дома, в отличии от массивов, копируются физически сразу, а вот язык матерный работает только по ссылкам

думаю, вы поняли смысл, который я заложил в эту фразу еще в 18 веке

Andrei
10.11.2017
09:59:14
может хватить словобдлудить? что вы пытаетесь доказать? странный вы.

Google
Dmitry
10.11.2017
09:59:43
хм... разве вы не поняли? ну учитесь читать...

а вообще напомнило https://youtu.be/-dNwFVk68PI

тут повменяемее ;) а вот понять не могу... а ковариантность не нарушает ли LSP?

Sparrow
10.11.2017
15:32:50
народ как подменить значение в $_POST приходит к примеру Russia но мне нада чтоб подставлялось из json его код rus

Alexey
10.11.2017
15:36:28
($_post[country] == 'Russia') ? 'rus' : ''

Sparrow
10.11.2017
15:37:58
он берёт из json данные вот код: https://pastebin.com/X7BZiVw7 вот сайт в origin подставляется имя а не код( вот json файл: http://travel/resources/city.json

Alexey
10.11.2017
15:38:14
Вообще пост это обычный массив и работать с ним можно как с массивом. Отличие только в том что он суперглобальный

Sparrow
10.11.2017
15:38:28
нада чтобы в origin подставлялся короткий код страны RUS NY ENG

так работает если в поиске принудительно написать свои короткие коды

Alexey
10.11.2017
15:42:10
Создать массив справочник со странами и в зависимости от того что в посте получать значение из справочника

Sparrow
10.11.2017
15:42:34
код можно примерный

Alexey
10.11.2017
15:44:50
[Russia => 'rus', America => 'en'],

Как то так.

Я про массив справочник

Sparrow
10.11.2017
15:45:36
но мне нада чтоб он брал из моего json)

Alexey
10.11.2017
15:45:46
А дальше выборка по ключу

Ну ты Джейсон распарсь

Страница 385 из 956