PHP.SU

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

Страниц (2): [1] 2 »

> Найдено сообщений: 19
mstan Отправлено: 13 Июля, 2017 - 12:44:41 • Тема: namespace/autoload • Форум: Вопросы новичков

Ответов: 0
Просмотров: 113
Разбираюсь с аутолоадом и пространствами имен.
Есть два файла:
index.php
./classes/live/Human.php

index.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. function Myautoloader($class)
  3. {
  4.     $class = str_replace('\\', '/', $class).'.php';
  5.     if(file_exists($class)){
  6.         echo 'file found';
  7.         require_once $class;
  8.     }
  9. }
  10. spl_autoload_register('Myautoloader');
  11.  
  12. use classes\live\Human;
  13.  
  14. $human = new Human();
  15.  
  16.  


Human.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. namespace classes\live\Human;
  3.  
  4. class Human
  5. {
  6.     public function __construct()
  7.     {
  8.         echo "Class human created";
  9.     }
  10.  
  11. }


Вывод в браузере
Цитата:
file found
Fatal error: Uncaught Error: Class 'classes\live\Human' not found in D:\xampp7.1\htdocs\php_ess\index.php:14 Stack trace: #0 {main} thrown in D:\xampp7.1\htdocs\php_ess\index.php on line 14


Как я понимаю, пространство имен срабатывает, файл находится, но почему же он не инклюдится?



UPD Решено, namespace classes\live;
mstan Отправлено: 09 Августа, 2016 - 10:50:27 • Тема: уникальная пара из массива • Форум: Вопросы новичков

Ответов: 0
Просмотров: 75
Есть массив, примерного вида:
PHP:
скопировать код в буфер обмена
  1.  
  2. $array = ('345' => 'first',
  3. '1138' => 'second',
  4. '38' => 'third',
  5. '715' => 'fourth',
  6. );
  7.  

Нужно составить алгоритм получения уникальных пар из ключей массива, например,
345 - 1138, 345-38, 345-715, 1138-38, 1138-715 и т.д. Нельзя сочитать между собой один и тот же ключ (345-345, 1138-1138 и т.д.)

РЕШЕНО:

PHP:
скопировать код в буфер обмена
  1.  
  2. $array = array(
  3.         '345' => 'first',
  4.         '1138' => 'second',
  5.         '38' => 'third',
  6.         '1' => 'fourth',
  7.         );
  8.  
  9. $arr = array_flip($array);
  10.  
  11.  
  12. foreach($arr as $key)
  13. {
  14.         reset($arr);
  15.         for( $i = current($arr), $count = 0; $count < count($arr); $i = next($arr), $count++ )
  16.         {
  17.                 if( $key !== $i)
  18.                         echo "$key - $i<br />";
  19.         }
  20. }
mstan Отправлено: 04 Июня, 2016 - 13:38:55 • Тема: php 7 Fatal error: Constant expression contains invalid operations • Форум: Если скрипт не работает

Ответов: 5
Просмотров: 8742
Всем спасибо, пошел исправляться.
mstan Отправлено: 04 Июня, 2016 - 13:26:06 • Тема: php 7 Fatal error: Constant expression contains invalid operations • Форум: Если скрипт не работает

Ответов: 5
Просмотров: 8742
Собственно, такой пример:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class test
  3. {
  4.         var $var = $_SERVER["DOCUMENT_ROOT"];
  5. }


возвращает фатал. Больше в файле кода нет.

Fatal error: Constant expression contains invalid operations in C:\xampp\htdocs\modx\test.php on line 4

PHP Version 7.0.3
Windows 10 + xampp
mstan Отправлено: 30 Ноября, 2015 - 11:42:28 • Тема: Удаление дублей в массиве • Форум: Вопросы новичков

Ответов: 3
Просмотров: 680
lastdays пишет:
PHP:
скопировать код в буфер обмена
  1. $array = array(1,1,1,2,2,2,3,3);
  2. foreach ($array as $r)
  3. {
  4.   if ( !$pr[$r] )
  5.   {
  6.     $pr[$r] = $r;
  7.     echo $pr[$r]. ' <br /> ';
  8.   }
  9. }




Спасибо, не додумался использоваться значения как ключи в новом массиве.
mstan Отправлено: 29 Ноября, 2015 - 14:49:39 • Тема: Удаление дублей в массиве • Форум: Вопросы новичков

Ответов: 3
Просмотров: 680
На одном из сайтов нашел такую задачку:
Цитата:
У нас есть массив $array = array(1,1,1,2,2,2,2,3),
необходимо вывести 1,2,3, то есть вывести без дублей при помощи
лишь одного цикла foreach без использования функций группировки
элементов массива и не нарушая данный массив..


Если я правильно понял - нельзя использовать array_unique. В моем понимании, нужно как-то сравнивать текущий элемент массива со всеми предыдущими, и в случае его уникальности - выводить на страницу. Но с реализацией у меня как-то выходит очень туго. Поможете?
mstan Отправлено: 26 Ноября, 2015 - 14:53:58 • Тема: php + mysql • Форум: Напишите за меня, пожалуйста

Ответов: 8
Просмотров: 115
Miamao пишет:
Но все заработало после того как я добавил в lib.inc.php вначале всего 4 строки:

$title = $_POST['title'];
$author = $_POST['author'];
$pubyear = $_POST['pubyear'];
$price = $_POST['price'];


Вы бы их еще отфильтровали, а то залезет в запрос всякое непотребство.
mstan Отправлено: 25 Ноября, 2015 - 15:05:06 • Тема: Разница в ответах • Форум: Вопросы новичков

Ответов: 1
Просмотров: 121
PHP:
скопировать код в буфер обмена
  1. echo "первый метод <br>";
  2. echo 3/4 - 1/4;
  3. echo "<br>";
  4. echo "второй метод <br>";
  5. function test($x, $y){
  6. echo $x - $y;
  7. }
  8. test("3/4","1/4");


Почему получаются разные ответы?

PS
А вот так уже верно

PHP:
скопировать код в буфер обмена
  1. $x = 3/4;
  2. $y = 1/4;
  3. echo "первый метод <br>";
  4. echo $x - $y;
  5. echo "<br>";
  6. echo "второй метод <br>";
  7. function test($a, $b){
  8. echo $a - $b;
  9. }
  10. test($x, $y);



PPS
Разобрался, вопрос в кавычках
PHP:
скопировать код в буфер обмена
  1. echo "первый метод <br>";
  2. echo 3/4 - 1/4;
  3. echo "<br>";
  4. echo "второй метод <br>";
  5. function test($x, $y){
  6. echo $x - $y;
  7. }
  8. test(3/4,1/4);


Тему можно закрыть Улыбка
mstan Отправлено: 22 Ноября, 2015 - 13:16:16 • Тема: короч нашол скрипт статейного блога на php mysql подскажите мне пожалуйста скрипт и sql запрос для дамбпа базы данных • Форум: Напишите за меня, пожалуйста

Ответов: 1
Просмотров: 37
SELECT * FROM articles INTO OUTFILE '/tmp/articles.sql' - sql запрос


PHP:
скопировать код в буфер обмена
  1. mysql_query('SELECT * FROM  articles INTO OUTFILE \'tmp/articles.sql\'') or die("Invalid query: " . mysql_error());
mstan Отправлено: 09 Ноября, 2015 - 22:50:22 • Тема: Подкорректируйте пожалуйста • Форум: Напишите за меня, пожалуйста

Ответов: 5
Просмотров: 55
Без функций, т.е. без array_sum?
PHP:
скопировать код в буфер обмена
  1. $array = array(5,7,2,3,27,3,5);
  2. $sum = 0;
  3. //считаем среднее значение массива
  4. for ($i = 0; $i < count($array); $i++){
  5. $sum = $sum + $array[$i];
  6. }
  7. echo "Сумма значений массива = ".$sum."<br>";
  8. $middle = $sum/count($array);
  9. echo "Среднее значение массива = {$middle}<br>";
  10.  
  11. //осуществляем перебор элементов массива и сравниваем его со средним
  12. //значением, согласно предложенной формуле
  13.  
  14. for($i = 0; $i < count($array); $i++){
  15. if(($array[$i] - $middle)/$middle >1 or
  16.    ($array[$i] - $middle)/$middle <-1){
  17.   echo "{$array[$i]} отличается от среднего значение больше, чем на 100%<br>";
  18. }
  19. }
mstan Отправлено: 14 Августа, 2015 - 20:54:35 • Тема: разбор кода • Форум: Вопросы новичков

Ответов: 3
Просмотров: 223
А как этот процесс произвести в обратном порядке? Т.е. получить именно ту самую /** тут_типичная_абракадабра_для_сжа того_файла **/? И что это за ,$match)?($match[1]):""?
mstan Отправлено: 14 Августа, 2015 - 17:51:29 • Тема: разбор кода • Форум: Вопросы новичков

Ответов: 3
Просмотров: 223
Есть код, разбираюсь в его логике
PHP:
скопировать код в буфер обмена
  1. create_function('',"};".gzinflate(preg_match("#/\*\*(.*)\*\*/#se",implode("",file($_SERVER["SCRIPT_FILENAME"])),$match)?($match[1]):"")."//");


Поправьте, если не прав:
1) file($_SERVER["SCRIPT_FILENAME"]) - файл считывает сам себя, получаем массив;
2) трансформируем массив в строку (implode)
3) ищем совпадения по шаблону **(.*)**, пишем это дело в $match. Не очень разобрался с модификатором е, как-то все мудрено на php.net расписано
4) ,$match)?($match[1]):"" - вот тут я в тупике
5) распаковываем то, что получили, какой-то условный some_phpcode
6) создаем функцию create_function('',"};".some_phpcode."//");
Тут я тоже не понимаю, что за символы }; и // до и после some_phpcode

Подскажите, где неправ в логике, что за непонятные мне моменты в коде (п. 3, п.4 и п.6)
И по возможности, как создать обратный процесс?

ПС Сам исходник файла представляет собой нечто вида:
PHP:
скопировать код в буфер обмена
  1. <?PHP  /** тут_типичная_абракадабра_для_сжатого_файла **/ create_function('',"};".gzinflate(preg_match("#/\*\*(.*)\*\*/#se",implode("",file($_SERVER["SCRIPT_FILENAME"])),$match)?($match[1]):"")."//");
mstan Отправлено: 02 Июля, 2015 - 12:38:42 • Тема: Криптарифмы • Форум: Вопросы новичков

Ответов: 18
Просмотров: 2125
Упростил http://forum.php.su/topic.php?fo...22404#1435822404

Спойлер (Отобразить)


Так уже получше, имхо.
mstan Отправлено: 02 Июля, 2015 - 11:40:39 • Тема: Криптарифмы • Форум: Вопросы новичков

Ответов: 18
Просмотров: 2125
dcc0, в целом, не суть. Откровенно говоря, a+b=cd, a+b=ad - не криптарифмы, т.к. эти фразы сложно назвать осмысленными.
Я хочу написать скрипт для решения криптарифма.
mstan Отправлено: 02 Июля, 2015 - 11:12:52 • Тема: Криптарифмы • Форум: Вопросы новичков

Ответов: 18
Просмотров: 2125
Почему противоречит? "Как правило, имеет одно решение" != "Всегда имеет одно решение"

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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB