Самые главные функции PHP

Все, кто занимается разработкой и написанием кода делают ошибки. Это относится не только к PHP, а к любому языку программирования. Потому средства отладки занимают важное место в арсенале любого программиста. PHP ими тоже не обделён. Ошибки фатальные, связанные с неправильным синтаксисом обычно выдаются прямо в браузер. Но вот второй тип ошибок, которые называются ошибками времени выполнения отслеживать гораздо труднее. Чаще всего они связаны со значениями переменных вашего скрипта.
К примеру, какая-нибудь функция ожидает булево значение, а оно на самом деле целое. Масса проблем связана с NULL-значениями. Неявное преобразование типов в PHP тоже добавляет головной боли. В любом проекте рано или поздно наступает момент, когда просто необходимо узнать, а все ли внутри выглядит и происходит так, как было вами задумано и спроектировано.
Поэтому, можете со мной не соглашаться, но я считаю, что главными функциями в PHP являются две: print_r и var_dump. Именно они и позволяют просмотреть значения и типы переменных скрипта во время его выполнения, что является самым простым и доступным способом его отладки.

var_dump — выводит информацию о переменной.

Описание аргументов и значений.
void var_dump ( mixed $expression [, mixed $expression [, $... ]] )

Функция отображает структурированную информацию об одном или нескольких выражениях, которая включает в себя их тип и значение. Массивы и объекты анализируются рекурсивно с разным отступом у значений для визуального отображения структуры. В PHP 5 все общедоступные, закрытые и защищенные свойства объекта также будут показаны в выводе. Функция выводит непосредственно в браузер. Вывод не отформатирован в HTML-теги, поэтому выводится в одну строчку. Чтобы видеть массивы и отступы, потребуется заключать вывод функции в теги PRE. Для сохранения вывода в строковой переменной, необходимо использовать функции контроля вывода, чтобы перехватывать выводимые этой функцией данные. Функция не возвращает значения после выполнения.
Список параметров
$expression – Выражение для вывода в браузер. Выводимых выражений или переменных может быть несколько. 
Примерный вид вывода функции var_dump():

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
}

print_r() – Выводит информацию о переменной в удобочитаемом виде.

Описание аргументов и значений.
mixed print_r ( mixed $expression [, bool $return ] )
print_r() и var_dump() могут также показывать защищенные (protected) и закрытые (private) атрибуты объектов в PHP 5. Статические элементы класса не будут отображены. Следует помнить, что print_r() установит внутренний указатель массива в его конец. Используйте функцию reset() для установки его в начало массива.
Список параметров
$expression – Выражение для вывода в браузер.
$return –  Если Вы хотите перехватить вывод print_r(), используйте параметр $return . Если его значение равно TRUE, то print_r() вернет результат вывода вместо вывода в браузер (который производится по умолчанию). При выводе функция использует внутренний буфер вывода, поэтому  ее нельзя использовать с этим параметром после вызова функции контроля вывода ob_start(). Параметр  $return появился только в версии 4.3.0. В более ранних версиях приходилось использовать функции контроля вывода.
Возвращаемые значения
Если в функцию передаются значения типов string, integer или float, будет напечатано само значение. Если передается массив array, значениия будут напечатаны в формате, показывающем ключи и элементы массива. Аналогичный формат вывода используется для объектов.
До версии 4.0.4 print_r() будет зацикливалась, если передавался массив или объект, который содержал прямую или косвенную ссылку на себя. В более старших версиях такой массив или объект обозначается словом *RECURSIVE*
Примерный вид вывода print_r() более компактен, чем у var_dump(), но не содержит информации о типах переменных:

Array
(
  [a] => apple
  [b] => banana
  [c] => Array
    (
      [0] => x
      [1] => y
      [2] => z
    )
)

Примеры практического кода:

Обычный способ использования функций

<pre><?php print_r($var) ?></pre>
<pre><?php var_dump($var) ?></pre>

Если в вашем проекте прямой вывод HTML cразу нежелателен, то вывод функций можно поместить в переменные и использовать их там, где необходимо.
$out = '<pre>'.print_r($var,true).'</pre>';
...
print $out;

С функцией var_dump() дело оистоит сложнее - для получения ее вывода в переменную необходимо использовать контроль вывода.
ob_start();
var_dump($var);
$out = ob_get_contents();
ob_end_clean();
...
print $out;

Ну а если в полях отображаемого объекта или в переменных содержится HTML-код, то его вывод следует защитить функцией htmlspecialchars():
$out = '<pre>'.htmlspecialchars(print_r($var,true)).'</pre>';
...
print $out;

Пользовательское решение

В случае очень громоздких переменных с большим числом полей содержащих массивы и объекты вывод обоих функций становится неудобен и плохо читаем. В этом случае можно предложить пользовательскую реализацию функции, которая дает более наглядный HTML-код.

function print_r_html($val, $key=NULL){
  static $i = 0;
  $i++;
  $type = gettype($val);
  $label = isset($key) ? "<strong>".htmlspecialchars($key)."</strong> =&gt; " : "";
  $style = ($i == 1 ? "" : "display: none; ");
  print "<div id=\"array_tree_$i\" class=\"array_tree\" style=\"margin-left: 10px\">";
  switch ($type) {
    case "array":
    case "object":
      if (isset($key)) {
        print "<strong><a onclick=\"document.getElementById('";
        print "array_tree_element_$i').style.display = ";
        print "document.getElementById('array_tree_element_$i";
        print "').style.display == 'block' ?";
        print "'none' : 'block';\" ";
        print "name=\"array_tree_link_$i\"";
        print "href=\"#array_tree_link_$i\">".htmlspecialchars($key)."</a></strong> =&gt; ";
      }
      if($type=="array") print "Array (".count($val).")";
      if($type=="object") print "Object <strong>".get_class($val)."</strong>";
      print "<div class=\"array_tree_element_\" id=\"array_tree_element_$i\" style=\"$style\">";
      foreach($val as $k=>$v) {
        print print_r_html($v, $k);
      }
      print "</div>";
    break;
    case "integer":
    case "double":
      print $label . "<em>".htmlspecialchars($val)."</em>";
    break;
    case "boolean":
        print $label . ($val ? "true" : "false" );
    break;
    case "string":
      if(strlen($val)>255 && isset($key)) {
        print "<strong><a onclick=\"document.getElementById('";
        print "array_tree_element_$i').style.display = ";
        print "document.getElementById('array_tree_element_$i";
        print "').style.display == '' ?";
        print "'none' : '';\" ";
        print "name=\"array_tree_link_$i\"";
        print "href=\"#array_tree_link_$i\">".htmlspecialchars($key)."</a></strong> =&gt; ";
        print "<code>".htmlspecialchars(substr($val,0,255));
        print "<span id=\"array_tree_element_$i\" style=\"$style\">".htmlspecialchars(substr($val,255))."</span>";
        print "</code>";
      }
      else {
        print $label . "<code>".htmlspecialchars($val)."</code>";
      }
    break;
    default:
      print $label.gettype($val);
    break;
  }
  print "</div>";
}

В выводе этой функции нескалярные величины (массивы и объекты) свернуты и разворачиваются при щелчке по ним правой кнопкой мыши. Так же происходит обрезание текстовых полей до 255 символов с раскрытием их при щелчке по имени поля.
 
Воронин Валентин, shaman.asiadata.ru
 

Хотелось бы посмотреть

Хотелось бы посмотреть примеры применения данной функции, и вывод который она генерирует, А то так непонятно как то :)

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

Есть бесплатные видео уроки по php: http://life-prog.ru/video.php

THANKS

THANKS...that was so helpfulllllllllllllll!! great JOB! please publish it on

http://php.net/manual/en/function.print-r.php

GOOD JOB dude....

Don't mention it.

Don't mention it.

А как функцию strtotime на

А как функцию strtotime на завтрашний день применить?вот как тут про strtotime написано,но только на завтрашний.

Скорми ей tomorrow

Скорми ей tomorrow