PHP.SU

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

Страниц (8): [1] 2 3 4 5 6 7 8 »

> Найдено сообщений: 115
Sanek_OS9 Отправлено: 15 Июня, 2017 - 00:39:34 • Тема: Как передать в функцию переменные и там их инициализировать? • Форум: Вопросы новичков

Ответов: 4
Просмотров: 249
Помогли на другом ресурсе, выложу сюда может кому пригодится)
PHP:
скопировать код в буфер обмена
  1. function test($params) {
  2.         extract($params);
  3.         unset($params);
  4.         var_dump($a, $b, $c, $d ?? '');
  5.         echo '=========================' . PHP_EOL;
  6. }
  7. $a = 1;
  8. $b = 'b';
  9. $c = 12.35;
  10. $data = [
  11.         'a' => $a,
  12.         'b' => $b,
  13.         'c' => $c
  14. ];
  15. test($data);
  16.  

(Добавление)
Строитель пишет:
Sanek_OS9, вам нужно передавать в вызов функции заранее не известное количество аргументов?

Да, именно так и есть, мне уже подсказали как это сделать, выше написал решение.
Sanek_OS9 Отправлено: 15 Июня, 2017 - 00:04:21 • Тема: Как передать в функцию переменные и там их инициализировать? • Форум: Вопросы новичков

Ответов: 4
Просмотров: 249
Как передать в функцию переменные и там их инициализировать при условии что передаваемые значения заранее не известны?
Например
PHP:
скопировать код в буфер обмена
  1. function test($a){
  2.     //юзаем переменную $a
  3. }
  4. $a = 5;
  5. test($a);
  6.  

Проблема в том что передаваться будут не только $a а и другие и использовать их нужно в таком виде в котором передал, если передам $user то в функции она должна быть доступна
Например
PHP:
скопировать код в буфер обмена
  1. function test($array)
  2. {
  3.     list($user, $a) = $array;
  4. }
  5. $a = 5;
  6. $user = 'Vasya';
  7. test([$user, $a]);
  8.  

Как заставить выше написанную ф-цию добавлять и другие переменные?
что бы если вызвал
PHP:
скопировать код в буфер обмена
  1. $a = 1;
  2. $user = 'Lusya';
  3. $b = 25;
  4. test([$user, $a, $b]);
  5.  

То $b тоже там объявилась
Должно получится

но это должно произойти автоматически
Sanek_OS9 Отправлено: 08 Мая, 2017 - 23:39:43 • Тема: Ошибка при явном указании свойства • Форум: Объектно-ориентированное программирование

Ответов: 10
Просмотров: 1580
OrmaJever пишет:
Sanek_OS9 пишет:
Я этот код с видеоурока взял

зачем брать код который вы даже не понимаете как работает и почему. Если бы он отработал правильно, а я так понимаю что он и отработал правильно, то что вам это дало? Что вы поняли из этого? Ничего, вот именно. Поэтому лучше написать 3 строчки но которые вы сами понимаете что они делают, чем 10 строк из урока непонятно каких

мне это дало что я понял зачем его приводил автор в пример и возможно я буду из этого что то использовать.
Набросились на меня и спросить уже ничего нельзя) если спрашиваю значит оно мне надо.
Все тема закрыта.
Sanek_OS9 Отправлено: 08 Мая, 2017 - 18:12:21 • Тема: Ошибка при явном указании свойства • Форум: Объектно-ориентированное программирование

Ответов: 10
Просмотров: 1580
andrewkard пишет:
Sanek_OS9 пишет:
Где я обращаюсь к булеву значению как к объекту?

тут:
$b->setA(true)->create();
если метод setA вернет булево значение, то вызов метода create завершится ошибкой, поскольку $b->setA(true) уже не является объектом

Спасибо, простой, понятный и адекватный ответ, не то что у некоторых....
Я обычно методы так не вызывал $b->setA(true)->create(); один за другим потому запутался.
Sanek_OS9 Отправлено: 08 Мая, 2017 - 17:35:25 • Тема: Ошибка при явном указании свойства • Форум: Объектно-ориентированное программирование

Ответов: 10
Просмотров: 1580
caballero пишет:
Цитата:
О великий "гуру" идите вы куда по дальше и не бесите участников.

если тебя бесит что тебе указывают на ошибки зачем вообще тут писать?
Цитата:
хотелось бы знать почему нельзя вернуть $this->a например вместо $this ведь для этого я и учу язык что бы понимать как все работает

так читай ответы а не умничай

кто сказал что его нельзя вернуть?
руским языком написали что ты возвращает булево значения а обращаешся к нему как обьекту

и в ошибке так написано черным по белому если бы удосужился прочитать
Call to a member function create() on a non-object

Уверен что тебе с таким подходом вообще стоит заниматся програмированием?

Тем более что за 5 лет с момента регистрации (а значит минимум пять лет изучения) до сих пор не понимаешь разницы между обьектом и скалярным значением

Где я обращаюсь к булеву значению как к объекту?
Sanek_OS9 Отправлено: 08 Мая, 2017 - 17:18:34 • Тема: Вывести с одной таблицы с разной сортировкой • Форум: Хранение данных, их вывод и обработка

Ответов: 3
Просмотров: 878
T1grOK пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `wall_posts` WHERE `id_user` = '$id_ank' ORDER BY IF(parent = 0, `id` * -1, `id`) ASC

Огромное спасибо, ORDER BY IF для меня новое Закатив глазки , пойду изучать, еще раз спасибо Улыбка
Sanek_OS9 Отправлено: 08 Мая, 2017 - 16:56:19 • Тема: Ошибка при явном указании свойства • Форум: Объектно-ориентированное программирование

Ответов: 10
Просмотров: 1580
caballero пишет:
вообще то поля класса
в данном случае $a полагается обьявлять.

Если уж написали быдлокод то хотя бы укажите какая именно ошибка возникает.

Я термин "неявный" тут вообще не лепится.

О великий "гуру" идите вы куда по дальше и не бесите участников.
(Добавление)
OrmaJever пишет:
ошибка того что вы возвращаете из метода булевое значение
Sanek_OS9 пишет:
return $this->a;

а потом обращаетесь к нему как к обьекту?
Sanek_OS9 пишет:
$a = $b->setA(true)->create();

даже не знаю почему это

Ошибка кстати Fatal error: Call to a member function create() on a non-object in W:\domains\zadanie.ru\class.php on line 24
Я этот код с видеоурока взял, и он как оказывается даже не работает) то что там оговаривалось должно выглядеть так:
PHP:
скопировать код в буфер обмена
  1. class B{
  2.     public $a = false;
  3.     public $b = true;
  4.     public function setA($flag){
  5.         $this->a = $flag;
  6.         return $this;
  7.     }
  8.     public function setB($flag){
  9.         $this->b = $flag;
  10.         return $this;
  11.     }
  12.     public function create(){
  13.         return new A($this->a, $this->b);
  14.     }
  15. }
  16.  

Выполняет то о чем шла речь но хотелось бы знать почему нельзя вернуть $this->a например вместо $this ведь для этого я и учу язык что бы понимать как все работает а не что бы написать что то лишь бы оно работало не понимая почему.
Sanek_OS9 Отправлено: 08 Мая, 2017 - 13:04:02 • Тема: Ошибка при явном указании свойства • Форум: Объектно-ориентированное программирование

Ответов: 10
Просмотров: 1580
Помогите разобраться с переменной $this в классе а именно почему если в методе явно указать свойство то возникнет ошибка а если просто указать $this то все будет работать как нужно.
PHP:
скопировать код в буфер обмена
  1. class A{
  2.     public function __construct($a) {
  3.         $this->a = $a;
  4.     }
  5. }
  6. class B{
  7.     public function setA($flag = false){
  8.         $this->a = $flag;
  9.         return $this;
  10.     }
  11.     public function create(){
  12.         return new A($this->a);
  13.     }
  14. }
  15. $b = new B();
  16. $a = $b->setA(true)->create();
  17.  

В таком варианте метода возникнет ошибка
PHP:
скопировать код в буфер обмена
  1.     public function setA($flag = false){
  2.         $this->a = $flag;
  3.         return $this->a;
  4.     }
  5.  
Sanek_OS9 Отправлено: 06 Мая, 2017 - 16:51:44 • Тема: Вывести с одной таблицы с разной сортировкой • Форум: Хранение данных, их вывод и обработка

Ответов: 3
Просмотров: 878
Сделал объединение с помощью union, всем спасибо за помощь здесь все всегда всем помогают...
PHP:
скопировать код в буфер обмена
  1.         $result = DB::me()->query(""
  2.                 . "(SELECT * FROM `wall_posts` WHERE `id_user` = '$id_ank' AND `parent` = '0' ORDER BY `id` ASC) "
  3.                 . "UNION "
  4.                 . "(SELECT * FROM `wall_posts` WHERE `id_user` = '$id_ank' AND `parent` > '0' ORDER BY `id` ASC)"
  5.                 . "")->fetchAll() ;
  6.  
Sanek_OS9 Отправлено: 06 Мая, 2017 - 14:07:24 • Тема: Вывести с одной таблицы с разной сортировкой • Форум: Хранение данных, их вывод и обработка

Ответов: 3
Просмотров: 878
Здравствуйте, передо мной возникла следующая задача, нужно вывести сами сообщения и комментарии к этим сообщениям, должен получится вывод в виде древа с одним условием, сообщения выводятся новые вверху, а комментарии к ним новые внизу.
Я все это сделал, но из за того что разная сортировка у меня два запроса, одним получаю сообщения под одной сортировкой, комментарии к ним под другой а потом их совмещаю в один массив:
PHP:
скопировать код в буфер обмена
  1.         $parent = DB::me()->query("SELECT * FROM `wall_posts` WHERE `id_user` = '$id_ank' AND `parent` = '0' ORDER BY `id` DESC")->fetchAll() ;
  2.         $children = DB::me()->query("SELECT * FROM `wall_posts` WHERE `id_user` = '$id_ank' AND `parent` > '0' ORDER BY `id` ASC")->fetchAll() ;
  3.         $result = array_merge($parent, $children);
  4.  

Можно это дело как то оптимизировать?
(Добавление)
Должен получится один массив со всеми сообщениями уже отсортированными
Sanek_OS9 Отправлено: 26 Февраля, 2017 - 00:33:54 • Тема: Не правильный подсчет SELECT SUM() • Форум: SQL и Архитектура БД

Ответов: 4
Просмотров: 65
Мелкий пишет:
float - приблизительное значение по своему определению ieee 754.
Если нужна точная математика - вам необходим формат фиксированной запятой, numeric (так же известный как decimal)

спасибо
Sanek_OS9 Отправлено: 25 Февраля, 2017 - 19:57:30 • Тема: Не правильный подсчет SELECT SUM() • Форум: SQL и Архитектура БД

Ответов: 4
Просмотров: 65
Мелкий пишет:
Sanek_OS9 пишет:
Тип полей pole1 и pole2 = int

Sanek_OS9 пишет:
По записям в таблице

Одно из утверждений ложно.

Судя по поведению агрегатной функции - тип данных float. Результат в пределах нормального отклонения


Извиняюсь, действительно ведь float, а отклонение никак не убрать?
Sanek_OS9 Отправлено: 25 Февраля, 2017 - 18:41:27 • Тема: Не правильный подсчет SELECT SUM() • Форум: SQL и Архитектура БД

Ответов: 4
Просмотров: 65
Добрый вечер, у меня почему то выводит не верный результат запрос: SELECT SUM(`pole1` + `pole2`) FROM `table`.
Тип полей pole1 и pole2 = int
По записям в таблице (см.скрин) результат должен быть = 1, а запрос выводит 0.9999999925494194
0.36545 + 0.36545 + 0.0391 + 0.23 = 1
Sanek_OS9 Отправлено: 15 Января, 2017 - 22:03:50 • Тема: Ошибка при сериализации объекта • Форум: Объектно-ориентированное программирование

Ответов: 5
Просмотров: 1258
Мелкий пишет:
Реализовать интерфейс Serializable или магические методы __sleep() и __wakeup(). При реализации не пытаться сериализовать PDO, соответственно.

Решил проблему, не стал сериализовывать PDO.
Создает кеш, он сейчас 25мб весит, это как, пойдет?)
Sanek_OS9 Отправлено: 15 Января, 2017 - 20:34:51 • Тема: Ошибка при сериализации объекта • Форум: Объектно-ориентированное программирование

Ответов: 5
Просмотров: 1258
Мелкий пишет:
Потому что объекты PDO сериализовать нельзя.

Можете что то посоветовать как быть в такой ситуации?
(Добавление)
А что по поводу этой документации тогда http://php.net/manual/ru/languag...erialization.php

Страниц (8): [1] 2 3 4 5 6 7 8 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB