PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (594): В начало « ... 5 6 7 8 [9] 10 11 12 13 ... » В конец

> Найдено сообщений: 8901
EuGen Отправлено: 08 Февраля, 2014 - 10:07:12 • Тема: Обьеденил 2 таблицы в выборке • Форум: SQL и Архитектура БД

Ответов: 1
Просмотров: 13
Выбирайте раздельно. То есть:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.   projects.id AS project_id,
  3.   users.id AS user_id,
  4.   projects.*,
  5.   users.*
  6. FROM
  7.   project
  8.     INNER JOIN users ON project.autor = users.login

- тогда обратиться к id таблицы projects сможете через $row['project_id'] - а к id таблицы users через $row['user_id'].
EuGen Отправлено: 08 Февраля, 2014 - 10:04:08 • Тема: Текст переменной как имя массива. Можно ли сделать? • Форум: Вопросы новичков

Ответов: 4
Просмотров: 194
PHP:
скопировать код в буфер обмена
  1. $a[0]='foo';
  2. $a[1]=11;
  3. $a[2]=22;
  4. $a[3]=33;
  5.  
  6. $result[current($a)] = array_slice($a, 1);

?
EuGen Отправлено: 07 Февраля, 2014 - 10:26:35 • Тема: Вот почему не сделать красиво • Форум: Прочее

Ответов: 15
Просмотров: 103
OrmaJever пишет:
А в чём? Интересно было бы узнать

Сейчас? Обратная совместимость, версионность и всё отсюда вытекающее. Тогда (имеется ввиду, когда принималось решение о синтаксисе) - сказать точно не могу. Есть, не скрою, фактор "исторически сложилось". Но в основном - это то, что касается неоднозначности перекрытия различных комбинаций (наподобие - статический член класса во вложенном неймспейсе, у которого есть статический метод. Или различные трюки с областями внутри классов и их наследников - решить при помощи приоритетов можно, но то, насколько это будет нечитаемо в подобных случаях - лучше даже не задумываться).
EuGen Отправлено: 07 Февраля, 2014 - 09:38:25 • Тема: Вот почему не сделать красиво • Форум: Прочее

Ответов: 15
Просмотров: 103
Изменить "\" на "::" для разыменования неймспейсов - дело трёх минут и изменение в одном файле. Ну, плюс перекомпиляция. Но дело не в этом.
EuGen Отправлено: 07 Февраля, 2014 - 09:24:58 • Тема: Вот почему не сделать красиво • Форум: Прочее

Ответов: 15
Просмотров: 103
Потому что PHP
EuGen Отправлено: 06 Февраля, 2014 - 09:32:41 • Тема: Выбор дочерних элементов (полностью ветки) • Форум: SQL и Архитектура БД

Ответов: 6
Просмотров: 31
Если речь об архитектуре - рекомендую посмотреть в сторону nested sets - а ещё лучше - closure table
EuGen Отправлено: 29 Января, 2014 - 12:43:51 • Тема: YouTube вернёт раздел управления комментариями • Форум: Прочее

Ответов: 3
Просмотров: 21
Спойлер (Отобразить)
EuGen Отправлено: 29 Января, 2014 - 10:41:41 • Тема: foreach • Форум: Вопросы новичков

Ответов: 5
Просмотров: 172
Обыграть так:

Изменить
PHP:
скопировать код в буфер обмена
  1.  
  2. main_table
  3.  
  4. | one | id1,id4,id6 |
  5. | two | id8,id9,id3 |


На

PHP:
скопировать код в буфер обмена
  1. main_table
  2.  
  3. | one |
  4. | two |
  5.  
  6. secondary_table
  7.  
  8. | one | id1 |
  9. | one | id4 |
  10. | one | id6 |
  11. | two | id8 |
  12. | two | id9 |
  13. | two | id3 |


И распрощаться с jaywalker
EuGen Отправлено: 29 Января, 2014 - 10:20:05 • Тема: foreach • Форум: Вопросы новичков

Ответов: 5
Просмотров: 172
Использовать таблицу-связку и не записывать в одно поле несколько значений через разделитель. Тогда простой JOIN даст все нужные данные для INSERT..SELECT
EuGen Отправлено: 28 Января, 2014 - 10:12:19 • Тема: Браузер Chrome может прослушивать разговоры пользователей • Форум: Прочее

Ответов: 4
Просмотров: 47
Любое ПО с закрытым кодом может делать то же самое - ведь нет способа это проверить. Любое ПО с открытым кодом может делать то же самое - ведь не возможно проследить за всем (однако, конечно, ситуация в случае с открытым кодом намного более прозрачна). Ну и, самое главное, существует вероятность уязвимости самих алгоритмов. Например, генерация ключей с заведомо ослабленной сложностью. Это практически невозможно проверить без специального анализа (но и тот не даст 100% ответа "да" или "нет").

Вывод - можно сказать так - "вероятно, нас всех прослушивают". Что делать? Быть в курсе этого - максимум, что доступно. Либо же - писать свои программы (начиная с контроллеров процессоров и ОС). Ах да, нет гарантии, что сами процессоры (или любое другое оборудование) не содержат закладок. И вот там что-либо проверить уже практически невозможно, ведь в шутке "Что делается в процессорах Intel не знает даже Intel" есть доля правды. Конечно, не всё то процессоры, что Intel - но иллюстрация достаточна.
EuGen Отправлено: 26 Января, 2014 - 11:17:51 • Тема: порядок выборки • Форум: Вопросы новичков

Ответов: 13
Просмотров: 425
Потому что он сортирует по значению выражения "int=0". Это значение будет равно 1, если int в самом деле 0 (ведь 0=0) или 0, если int не равен 0 (поскольку всё, что угодно, кроме 0, не равно 0). Поэтому сначала будут идти строки, у которых значение выражения "int=0" равно 0 (то есть всё, где int не 0), затем те, у которых значение выражения "int=0" равно 1 (то есть все те, у которых int=0)
EuGen Отправлено: 21 Января, 2014 - 16:43:09 • Тема: Хоть книгу пиши • Форум: Прочее

Ответов: 5
Просмотров: 43
Смотря какую хочется написать книгу. И при этом многое зависит от того, на какую аудиторию она будет ориентирована, поскольку написать хорошую книгу для новичков - много сложнее, чем написать хорошую книгу для профессионалов: ведь для вторых будет, как правило, достаточно высокого уровня знаний в предметной области, тогда как для первых - нужен ещё и большой опыт (знания "плохих практик", равно как и хороших) - и умение понятно излагать, исходя из минимального уровня знаний читателя.

Я не стану говорить ничего против, ведь больше литературы - значит больше возможностей. И всякая книга, как правило, находит своего читателя. Поэтому- пожелаю удачи в начинании.

P.S. По моему мнению, моих собственных знаний сильно не хватает для написания хорошей книги.
EuGen Отправлено: 20 Января, 2014 - 22:11:59 • Тема: Узнать ключ массива • Форум: Вопросы новичков

Ответов: 11
Просмотров: 2376
eai пишет:
key(end($array));

Так некорректно делать, поскольку end лишь переводит внутренний указатель, она не возвращает массив. Но, если честно - использовать end в общем случае я бы не рекомендовал. Это, действительно, быстрый способ, однако если забыть о таком действии, то можно получить очень трудно уловимую ошибку, ведь при операциях с массивом внутренний указатель будет передвинут. Здесь - либо использовать reset, либо использовать вообще другой способ. При этом reset тоже плох в общем случае - ведь в контексте операции нахождения ключа может быть так, что происходит итерация какого-либо внешнего цикла, к примеру, так что нарушать позицию указателя будет неверным решением.

Безопасным (но не самым быстрым) способом будет уже упомянутая array_keys. Она плоха лишь тем, что создаёт новый массив для такой простой операции. В случае, если массив большой, это может вызвать проблемы.

Небольшая иллюстрация того, почему бездумно использовать end - плохо:
PHP:
скопировать код в буфер обмена
  1. $data = ['foo'=>'1', 'bar'=>'2', 'baz'=>'3'];
  2. while(list($key, $value) = each($data))
  3. {
  4.     echo(sprintf('Current key is [%s] and value [%s]'.PHP_EOL, $key, $value));
  5.     if($value==='1')
  6.     {
  7.         //just want to use last key for some reason here:
  8.         end($data);
  9.         $result = key($data);
  10.     }
  11. }
  12. var_dump($result);

- результатом этого будет неожиданное:
CODE (php):
скопировать код в буфер обмена
  1. Current key is [foo] and value [1]
  2. Current key is [baz] and value [3]
  3. string(3) "baz"

- поскольку указатель был перемещён. И найти такое будет очень нелегко.
EuGen Отправлено: 18 Января, 2014 - 13:19:32 • Тема: Метод public, static • Форум: Объектно-ориентированное программирование

Ответов: 8
Просмотров: 1558
OrmaJever
В этом Вы не правы. Простое действие - гораздо сложнее, чем кажется. Больше можно прочесть здесь, но и это - далеко не полное объяснение имеющейся картины.
EuGen Отправлено: 18 Января, 2014 - 11:37:03 • Тема: Метод public, static • Форум: Объектно-ориентированное программирование

Ответов: 8
Просмотров: 1558
OrmaJever пишет:
старые не опытные версии позволяли такой (class::test()) вызов для не статических методов.

Новые тоже позволяют. Дело другое, что всегда будет выдаваться предупреждение.

Завершится ли ошибкой такой вызов, или нет - зависит от того, использует ли не статический метод, вызванный как статический, обращение к контексту текущего объекта (то есть $this)

Страниц (594): В начало « ... 5 6 7 8 [9] 10 11 12 13 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB