Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Полезные (интересные и оригинальные) решения

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Открыть новую тему     Написать ответ в эту тему

SafeWay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Начну:

Код:
 
  function err_handler ($errno, $errstr, $errfile, $errline) {
    global $display_errors;
    if(($errno != E_NOTICE && $errno != E_WARNING) && $display_errors){
      echo '';
    }
  }
  $error_flags = E_ALL & ~E_NOTICE;
  @error_reporting($error_flags);
  @ini_set ('error_reporting', $error_flags);
  $old_error_handler = set_error_handler("err_handler");
 

 
Бывает полезным, убивает все нотайсы, выводы ошибок и прочее.
 
ЗЫ: Желательно прикрепить.



Публикуем решения, а не задаем вопросы!
Тех же, кто этого не понимает, будем БАНИТЬ!  
Тема именно для уникальных, оригинальных и красивых решений. Если ты только взялся изучать php - не стоит сюда писать, так как, заведомо, у тебя не будет такого решения
 
ps: выделил специально для тех, у кого проблемы со зрением.





Цитата:
ЗЫ: Желательно прикрепить.
В ПМ по этому поводу писать надо. — Svarga.

Всего записей: 365 | Зарегистр. 28-12-2003 | Отправлено: 07:30 26-07-2004 | Исправлено: Cheery, 16:57 25-03-2007
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот еще сегодня вспомнил про конструкцию FOR о которой многие просто забывают (в том числе и я ) но на самом деле FOR цикл в РНР очень гибкий, вот допустим надо перебрать элементы массива, можно было банально инициализировать переменную счетчика вот так

Код:
$i = 1;
while (isset($settings['question'.$i])) {
  // делаем разные вещи
  $i += 1;
}

но потом вспомнил что такие конструкции красивей реализовывать через FOR а именно

Код:
for ($i=1; isset($settings['question'.$i]); $i++) {
  // делаем разные вещи
}

во первых на две строчки меньше (которые просто перегружают глаз) а во вторых наглядно видно что у нас здесь перебор с шагом в один и ничего не пропущено (вроде $i += 1;)
 
так что если кто не обращал внимания на возможности FOR, то стоит сделать это сейчас на сайте php.net

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 23:18 12-01-2008 | Исправлено: Delphi6, 23:19 12-01-2008
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Delphi6

Цитата:
$i = 0;
while (isset($settings['question'.(++$i)])) {
  // делаем разные вещи
 
}



----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:21 12-01-2008
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Цитата:
$i = 0;
while (isset($settings['question'.(++$i)])) {
  // делаем разные вещи
}

Зачетно, это действительно уменьшение кода до нельзя Хотя я не совсем хорошо передал всю суть, я хотел указать на то что в РНР FOR цикл имеет не обязательно шаг в один и не обязательно что бы было просто:

Код:
for ($i=1; $i<=10; $i++) {
}

а в реале можно писать что угодно, ибо все три части цикла это, первая инициализация, второе условие на которое буде проверяться после выполнения тела цикла и если оно выполняется то сначала осуществляться все операции в третьей части, вот банальный пример:

Код:
for ($i=1, $k=20, $s=7; ($j != false)and($s = 10); $j +=3, $k *= 3) {
}

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 09:17 13-01-2008 | Исправлено: Delphi6, 09:19 13-01-2008
MaxIkar



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Delphi6
Название топика (читаем вдумчиво): PHP: Полезные (интересные и оригинальные) решения

Цитата:
 
Код:
for ($i=1, $k=20, $s=7; ($j != false)and($s = 10); $j +=3, $k *= 3) {
}  

 
...а это даже не решение

Всего записей: 226 | Зарегистр. 04-06-2006 | Отправлено: 21:04 13-01-2008
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MaxIkar

Цитата:
а это даже не решение

Ржал очень долго, не перевелись на нашем форуме люди с острым умом
 
Ну а нас счет комента:
 
1) п. 2.16. главы VIII Соглашения по использованию
 
2) надо читать не только последний пост

Цитата:
так что если кто не обращал внимания на возможности FOR, то стоит сделать это сейчас на сайте php.net  

3) Понятие слов "полезные, интересные и оригинальные" является очень растяжимым, если мой пост не является для вас (вы например с пеленок только на TASM-е кодите) новостью можете просто игнорировать, это ваще право. Форум посещает очень много людей (в том числе и начинающих, каковым был и я) которые не находятся на таком ВЫСОКОМ уровне в программировании как вы.

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 22:23 13-01-2008 | Исправлено: Delphi6, 22:31 13-01-2008
JonJonson



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Delphi6, вот это

Цитата:
for ($i=1; isset($settings['question'.$i]); $i++) {
  // делаем разные вещи
}

вырвано из контекста, а потому фигня.
Насчёт же проще...

Цитата:
 
foreach ($settings as $key => $setting) {
  // делаем с $setting разные вещи
}
 


Всего записей: 135 | Зарегистр. 22-05-2004 | Отправлено: 10:11 14-01-2008 | Исправлено: JonJonson, 10:13 14-01-2008
MaxIkar



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Цитата:
а это даже не решение
 
Ржал очень долго, не перевелись на нашем форуме люди с острым умом  

 
Название темы, если вы не заметили, весьма простое и однозначное: PHP: Полезные (интересные и оригинальные) решения.
 
Именно поэтому я и сказал насчет того, что это даже не решение.
 

Цитата:
Ну а нас счет комента:
 
1) п. 2.16. главы VIII Соглашения по использованию  

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

Цитата:
2) надо читать не только последний пост
 

 
Полностью согласен, потому читаем шапку:

Цитата:
Тема именно для уникальных, оригинальных и красивых решений. Если ты только взялся изучать php - не стоит сюда писать, так как, заведомо, у тебя не будет такого решения
 
ps: выделил специально для тех, у кого проблемы со зрением.
 

 

Цитата:
Форум посещает очень много людей (в том числе и начинающих, каковым был и я) которые не находятся на таком ВЫСОКОМ уровне в программировании как вы.

 
Я нигде не упомянул ни словом о том, что я на высоком уровне, но - уж извините - обсуждать конструкции языка в теме оригинальных решений... Для начала хотя бы скачать мануал с комментами с php.net
 
А эта тема именно для поиска решений
 
Сорри за оффтоп, предлагаю продолжать в ПМ

Всего записей: 226 | Зарегистр. 04-06-2006 | Отправлено: 20:26 14-01-2008
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2All
Дальнейшие "претензии" только в ПМ!

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:42 14-01-2008
Ternik



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
предлагаю полезное решение для всех проблем по e-mail. имеется возможность встраивать в код письма ресурсы, которые вытаскиваются в последствиии по CID идентификатору. Все просто, функции не подписанные черточкой можно использовать из экземпляра класса, все остальное на ваш страх и риск. Все очевидно, attach (возвращает CID прикрепленного ресурса), to, from, send, addtext - разберетесь по ходу, destroy - разрушает данные экземпляра.

Код:
 
<?php
class mailer
{
    //
    var $charset = "windows-1251";
    //
    var $type;
    //
    var $header;
    //
    var $attach = array();
    //
    var $subject;
    //
    var $message;
    //
    var $messagetype = 'text/plain';
    //
    var $boundary;
    //
    var $from;
    //
    var $to = array();
    //
    function mailer()
    {
         
    }
    function destroy()
    {
        $this->subject     = '';
        $this->message     = '';
        $this->header    = '';
        $this->boundary = false;
        $this->to        = array();
        $this->attach    = array();
        ini_restore('sendmail_from');
    }    
    //
    function attach($filename)
    {
        if(!$this->boundary) $this->boundary = "_".md5(uniqid(rand(), true));
         
        $contentid = "@".md5(uniqid(rand(), true));
             
        if(($handle = fopen($filename, "r") or die("Failed open stream")))
        {
            $filenamemsg = preg_replace("/^(.*)[\/\\\](.*)$/","$2",$filename);        
            $this->attach[] = "--".$this->boundary."\r\nContent-Type: ".$this->_getfiletype($filename)."; name=\"".$filenamemsg."\"\r\nContent-Transfer-Encoding: base64\r\nContent-Disposition: attachment; filename=\"".$filenamemsg."\"\r\nContent-ID: <".$contentid.">\r\n\r\n".chunk_split(base64_encode(fread($handle, filesize($filename))));
            return $contentid;
        }
        return false;
    }
    //
    function addtext($string)
    {
        return($this->message .= $string);
    }
    //
    function from($string)
    {
        $this->from = $string;
        return(ini_set("sendmail_from",$string));
    }
    //
    function _header($type = 'text/plain')
    {
        $this->header .= "From: ". $this->from ."\r\n";
        $this->header .= "To: ". implode(", ",$this->to) ."\r\n";
        $this->header .= "Subject: ". $this->subject ."\r\n";
        $this->header .= "Date: ". date("r",time()) ."\r\n";
        $this->header .= "MIME-Version: 1.0\r\n";
        if($this->boundary)
        {
            $this->header .= "Content-Type: multipart/mixed;\r\n";
            $this->header .= "        boundary=\"".$this->boundary."\"\r\n";
        }
        else
        {
            $this->header .= "Content-Type: ".$this->messagetype."; charset=". $this->charset ."\r\n";
        }
        $this->header .= "X-Mailer: PHP/". phpversion();
        $this->header .= "\r\n\r\n";
    }
    //
    function to($string)
    {
        return($this->to[] = $string);
    }
    //
    function subject($string)
    {
        return($this->subject = $string);
    }
    //
    function send()
    {
        if(count($this->to) > 0)
        {
            $this->_header();
            $to = implode(",",$this->to);
            if(count($this->attach) > 0)
            {
                array_unshift($this->attach,"--".$this->boundary."\r\nContent-type: ".$this->messagetype.";\r\ncharset=\"".$this->charset."\"\r\nContent-Transfer-Encoding: quoted-printable\r\n\r\n".$this->message);
                     
                $message = '';
                     
                foreach($this->attach as $item)
                {
                    $message.= $item."\r\n";
                }
                $message.= "--".$this->boundary;
                echo $this->header.($message);
                //Enchanced Mail()
                if($this->enchance != false and is_int($this->enchance))
                {
                    //Not workin' yet
                }
                else
                {
                    $this->enchance = false;
                    return mail($to, $this->subject, ($message), $this->header);
                }
            }
            else
            {
                return mail($to, $this->subject, wordwrap($this->message,70), $this->header);
            }
        }
        return false;
    }
    function _getfiletype($filename)
    {
        require("mimes.php");
         
        if(preg_match("/^(.*)\.(.*)$/",$filename,$match))
        {
            if(isset($_MIMES[$match[2]]))
            {
                return $_MIMES[$match[2]];
            }
            else
            {
                return 'application/octet-stream';
            }
        }
        else
        {
            return false;
        }
    }
}
 
?>
 

ах, совсем забыл =) mimes.php

Код:
 
<?php  
#Ничего кроме =) $_MIMES
global $_MIMES;
$_MIMES = array (
  'ez' => 'application/andrew-inset',
  'atom' => 'application/atom+xml',
  'hqx' => 'application/mac-binhex40',
  'cpt' => 'application/mac-compactpro',
  'mathml' => 'application/mathml+xml',
  'doc' => 'application/msword',
  'bin' => 'application/octet-stream',
  'dms' => 'application/octet-stream',
  'lha' => 'application/octet-stream',
  'lzh' => 'application/octet-stream',
  'exe' => 'application/octet-stream',
  'class' => 'application/octet-stream',
  'so' => 'application/octet-stream',
  'dll' => 'application/octet-stream',
  'oda' => 'application/oda',
  'ogg' => 'application/ogg',
  'pdf' => 'application/pdf',
  'ai' => 'application/postscript',
  'eps' => 'application/postscript',
  'rdf' => 'application/rdf+xml',
  'smi' => 'application/smil',
  'gram' => 'application/srgs',
  'grxml' => 'application/srgs+xml',
  'mif' => 'application/vnd.mif',
  'xls' => 'application/vnd.ms-excel',
  'ppt' => 'application/vnd.ms-powerpoint',
  'wbxml' => 'application/vnd.wap.wbxml',
  'wmlc' => 'application/vnd.wap.wmlc',
  'wmlsc' => 'application/vnd.wap.wmlscriptc',
  'vxml' => 'application/voicexml+xml',
  'bcpio' => 'application/x-bcpio',
  'vcd' => 'application/x-cdlink',
  'pgn' => 'application/x-chess-pgn',
  'cpio' => 'application/x-cpio',
  'csh' => 'application/x-csh',
  'dcr' => 'application/x-director',
  'dir' => 'application/x-director',
  'dvi' => 'application/x-dvi',
  'spl' => 'application/x-futuresplash',
  'gtar' => 'application/x-gtar',
  'gzip' => 'application/x-gzip',
  'hdf' => 'application/x-hdf',
  'js' => 'application/x-javascript',
  'skp' => 'application/x-koan',
  'skd' => 'application/x-koan',
  'skt' => 'application/x-koan',
  'latex' => 'application/x-latex',
  'nc' => 'application/x-netcdf',
  'sh' => 'application/x-sh',
  'shar' => 'application/x-shar',
  'swf' => 'application/x-shockwave-flash',
  'sit' => 'application/x-stuffit',
  'sv4cpio' => 'application/x-sv4cpio',
  'sv4crc' => 'application/x-sv4crc',
  'tar' => 'application/x-tar',
  'tcl' => 'application/x-tcl',
  'tex' => 'application/x-tex',
  'texinfo' => 'application/x-texinfo',
  't' => 'application/x-troff',
  'tr' => 'application/x-troff',
  'man' => 'application/x-troff-man',
  'me' => 'application/x-troff-me',
  'ms' => 'application/x-troff-ms',
  'ustar' => 'application/x-ustar',
  'src' => 'application/x-wais-source',
  'xhtml' => 'application/xhtml+xml',
  'xslt' => 'application/xslt+xml',
  'xml' => 'text/xml',
  'dtd' => 'application/xml-dtd',
  'zip' => 'application/zip',
  'rar' => 'application/rar',
  'ace' => 'application/ace',
  'au' => 'audio/basic',
  'mid' => 'audio/midi',
  'midi' => 'audio/midi',
  'mpga' => 'audio/mpeg',
  'mp2' => 'audio/mpeg',
  'aif' => 'audio/x-aiff',
  'aiff' => 'audio/x-aiff',
  'm3u' => 'audio/x-mpegurl',
  'ram' => 'audio/x-pn-realaudio',
  'rm' => 'application/vnd.rn-realmedia',
  'wav' => 'audio/x-wav',
  'pdb' => 'chemical/x-pdb',
  'xyz' => 'chemical/x-xyz',
  'bmp' => 'image/bmp',
  'cgm' => 'image/cgm',
  'gif' => 'image/gif',
  'ief' => 'image/ief',
  'jpeg' => 'image/jpeg',
  'jpg' => 'image/jpeg',
  'png' => 'image/png',
  'svg' => 'image/svg+xml',
  'tiff' => 'image/tiff',
  'djvu' => 'image/vnd.djvu',
  'wbmp' => 'image/vnd.wap.wbmp',
  'ras' => 'image/x-cmu-raster',
  'ico' => 'image/x-icon',
  'pnm' => 'image/x-portable-anymap',
  'pbm' => 'image/x-portable-bitmap',
  'pgm' => 'image/x-portable-graymap',
  'ppm' => 'image/x-portable-pixmap',
  'rgb' => 'image/x-rgb',
  'xbm' => 'image/x-xbitmap',
  'xpm' => 'image/x-xpixmap',
  'xwd' => 'image/x-xwindowdump',
  'igs' => 'model/iges',
  'msh' => 'model/mesh',
  'mesh' => 'model/mesh',
  'wrl' => 'model/vrml',
  'ics' => 'text/calendar',
  'css' => 'text/css',
  'html' => 'text/html',
  'asc' => 'text/plain',
  'rtx' => 'text/richtext',
  'rtf' => 'text/rtf',
  'sgml' => 'text/sgml',
  'tsv' => 'text/tab-separated-values',
  'wml' => 'text/vnd.wap.wml',
  'wmls' => 'text/vnd.wap.wmlscript',
  'etx' => 'text/x-setext',
  'mpeg' => 'video/mpeg',
  'mpg' => 'video/mpeg',
  'qt' => 'video/quicktime',
  'mxu' => 'video/vnd.mpegurl',
  'avi' => 'video/x-msvideo',
  'movie' => 'video/x-sgi-movie',
  'ice' => 'x-conference/x-cooltalk',);
?>
 

Всего записей: 763 | Зарегистр. 25-09-2002 | Отправлено: 02:53 23-01-2008 | Исправлено: Ternik, 02:55 23-01-2008
Brodyaga



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ternik
 

Цитата:
$this->_getfiletype($filename).


Цитата:
    function _getfiletype($filename)
    {
        require("mimes.php");  

Т.е. каждый аттач инициирует вызов mimes.php? Таки не совсем полезно.

----------
Damn Metal

Всего записей: 2713 | Зарегистр. 07-01-2006 | Отправлено: 13:12 26-01-2008
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ternik
Спасибо действительно хороший класс, давно хотел увидеть на практике как реализуется прикрепление атачмента (мне правда мне на практике нужно сделать наоборот отделить атачмент). Вот только не пойму зачем у вас список MIME типов? ведь у РНР есть спец. функция для этих целей fileinfo()

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 22:19 13-02-2008
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как лучше хранить несколько чисел в одном столбце. Если размер для вас имеет значение, вместо банального implode(':', $arrayOfInt) или serialize() воспользуйтесь для начала конвертацией каждого INT числа в 4 символьную строку а потом склейте. После можно разбить по четыре символа (str_split()) и коневернуть назад, так как битовые операции самый быстрые то все будет работать очень быстро (я на счет << и >> операций).
 

Код:
function IntToStr($value) {  
  $a1 = $value & 0xFF;
  $a2 = ($value >> 8) & 0xFF;
  $a3 = ($value >> 16) & 0xFF;
  $a4 = ($value >> 24) & 0xFF;
  return chr($a4).chr($a3).chr($a2).chr($a1);
}
 
function StrToInt($value) {
  $a1 = ord($value[3]);
  $a2 = ord($value[2]);
  $a3 = ord($value[1]);
  $a4 = ord($value[0]);
  return ($a4 << 24) | ($a3 << 16) | ($a2 << 8) | $a1;
}

 
п.с. Экономия на каждом числе по ~6 байтов + 1 байт на разделитель который нам не нужен, а если чисел 10? то ~70 байтов на одной строке, не трудно подсчитать что на 10К строк это ~700кб
 
Спасибо dacuan, оказалось функции для конвертации в бинарную строку уже есть нет ничего нового в этом мире, все уже давно изобрели до нас pack() и unpack()

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 13:30 16-03-2008 | Исправлено: Delphi6, 17:12 19-03-2008
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Потребовался механизм загрузки картинок из Маркет.Яндекс продукции.
Насколько это хорошо или плохо я вдаваться не стал, но нижеперечисленный код вроде работает.
Полный код с примерами.

----------
comming soon..

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 16:57 19-03-2008 | Исправлено: 6epcepk, 16:59 19-03-2008
TERROR666

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ГЕНЕРАТОР ПАРОЛЕЙ  
$length - длина пароля  
$dig    - использовать ли цифры (по умолчанию - да)  
$lchar  - использовать ли латинские буквы (по умолчанию - да)  
$rchar  - использовать ли русские буквы  
$symb   - использовать ли дополнительные символы и какие  
 
 
Код:  
function generate_password($length,$dig=1,$lchar=1,$rchar=0,$symb=''){  
    $dig=array(0,1,2,3,4,5,6,7,8,9);  
    $rus=array(  
    "а","б","в","г","д","е","ж","з","и","к",  
    "л","м","н","о","п","р","с","т","у","ф",  
    "х","ц","ч","ш","щ","ь","ы","ъ","э","ю",  
    "я","ё","й");  
    $for=array(  
    "a","b","c","d","e","f","g","h","j","k",  
    "l","m","n","o","p","q","r","s","t","u",  
    "v","w","x","y","z");  
    $main=array();  
    $dig?$main=array_merge($main,$dig):true;  
    $rchar?$main=array_merge($main,$rus):true;  
    $lchar?$main=array_merge($main,$for):true;  
    !empty($symb)?$main=array_merge($main,explode(' ',$symb)):true;  
    shuffle($main);  
    return $pass=substr(implode('',$main),0,$length);  
}

Всего записей: 16 | Зарегистр. 26-11-2006 | Отправлено: 00:17 14-04-2008
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот решил поделиться куском кода который украшает программу (повышает читабельность):

Код:
function TrimLine($line) {
  return trim($line);
}
 
$fileLines = file('./input.txt');
var_dump(array_map('TrimLine', $fileLines));

часто бывает что надо считать данные из файла не однократно и убрать все переносы строк или пробелы с начала или конца каждой строки. Что бы не делать банально каждый раз foreach + trim можно воспользоваться вот такой конструкцией.
 
п.с. замечание особо одаренным, которые родились с книгой РНР5 в руках, этот код не для вас. Я перед вами склоняю голову и приношу свои извинения что оскорбил ваш взор своим банальным кодом
 
Добавлено:
Офигеть! Не перестает удивлять меня РНР

Цитата:
$dig?$main=array_merge($main,$dig):true;

как я понимаю это аналог

Код:
list($dig, $main) = array(array_merge($main,$dig), true);

п.с. пусть еще потом знатоки Perl говорят что РНР не гибкий язык программирования

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 06:11 16-04-2008
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Delphi6

Цитата:
function TrimLine($line)

зачем еще функцию какую то создавать? почему бы
Цитата:
array_map

не скормить оригинальную?  
 

Цитата:
как я понимаю это аналог  

нет
это просто  
if ($dig)  $main=array_merge($main,$dig);

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 06:16 16-04-2008 | Исправлено: Cheery, 06:18 16-04-2008
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Цитата:
зачем еще функцию какую то создавать? почему бы array_map не скормить оригинальную?

Как то не сообразил . Не раз замечаю что из за программирования начал по другому мыслить Правильный код будет выглядеть еще проще:

Код:
$fileLines = file('./input.txt');
var_dump(array_map('trim', $fileLines));

 
[DELETED]

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 08:19 16-04-2008 | Исправлено: Delphi6, 07:49 17-04-2008
zerkms

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Значит синтаксис таков:  

нет, не таков
 

Цитата:
п.с. а где еще можно почитать о похожих констуркциях?

всё тут: http://www.php.net/manual/ru/language.operators.php
 
ps: оффтоп это всё

----------
tvfёdor - оперативно уведомляет о раздачах rutracker | Блог об иммиграции в Новую Зеландию

Всего записей: 387 | Зарегистр. 07-05-2004 | Отправлено: 08:40 16-04-2008
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Delphi6
не будем флеймить, да?  
плюс код все равно нерабочий - есть ошибки.
например перекрытие $dig как аргумента и переменной внутри функции

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 18:34 16-04-2008
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошу прошения за флуд. Подумав немного сообразил что это тоже самое что:

Цитата:
[оператор] = [условие] ? [то что в случае true] : [то что в случае false];

здесь просто упущены [оператор] к которой присваивается значение и [то что в случае false], на его месте просто ture, что бы не нарушать синтаксис.
 
п.с. кстати это тоже можно расценивать как оригинальный способ использовать =?: конструкцию

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 19:00 16-04-2008 | Исправлено: Delphi6, 09:09 18-04-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Полезные (интересные и оригинальные) решения


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru