Archive for the ‘PHP’ Category

if через switch

Saturday, November 7th, 2009
switch ($af){
	case ($af <= 300): $user_code[2] = 1;
	break;
	case ($af > 300 && $af <= 500): $user_code[2] = 2;
	break;
	case ($af > 500 && $af <= 700): $user_code[2] = 3;
	break;
	case ($af >= 700): $user_code[2] = 4;
	break;
}

Решаем “Allowed memory size …”

Thursday, April 30th, 2009

memory_limit = 12M - опция в вашем php.ini файле
ini_set(’memory_limit’, ‘12M’); - php-код в начале проблемных скриптов.
php_value memory_limit 12M - опция в .htaccess файле той папки в которой запускается скрипт.

var_export > ( var_dump && print_r )

Saturday, February 14th, 2009

Порою при написании кода, особенно в Друпале, приходится выводить значение переменных что бы посмотреть как создавать свои. До сего момента я пользовался var_dump и print_r, и всегда раздражало то как они показывают массивы и что нельзя их просто с копировать. Но сегодня наткнулся на замечательную функцию var_export. Чем она лучше чем var_dump? Тем что отдает данные переменной так как они задавались

var_dump:
array(3) {
["a"]=>
int(1)
["b"]=>
int(2)
["c"]=>
int(3)
}
print_r
Array
(
[a] => 1
[b] => 2
[c] => 3
)
var_export:
array (
‘a’ => 1,
‘b’ => 2,
‘c’ => 3,
)

Кроме того, если добавить еще и TRUE через запятую то можно сливать с текстом, так что с этого дня прощайте print_r и var_dump. Теперь вывести и отладить будет еще проще.

К сожалению с объектами не все так же замечательно, но … кругом 16 не бывает.

Пропустить в foreach

Friday, February 13th, 2009

foreach($mapping as $key => $map){

if( ..условие.. ){ continue; } // иди дальше

# действия

}

Проверка папки на запись в PHP

Monday, January 19th, 2009

Хотя по мануалу функция is_writable проверяет только возможность записи в файл, но ее так же можно использовать для проверки возможности записи и папки

$fname = “./testfolder”;

if (is_writable($fname)){

echo “writable”;

}else{

echo “no writable”;

}

Как установить локали на Ubuntu

Friday, January 16th, 2009

Без наличия правильной локали на сервере некоторые функции php перестают работать, например preg_match или strtolower. Более подробно насколько важно это можно прочитать здесь, очень содержательный материал. А для того что бы прописать килиличные локали в Убунте надо дать команды

sudo locale-gen ru_RU.CP1251
sudo locale-gen ru_RU.KOI8-R

PDO::exec

Tuesday, January 13th, 2009

класс быстрой команды, возвращает только два типа данных это количество отработанных строк и последний id

$count = $dbh->exec("insert into test_table (name, ints) values ('Ira', 10);");
echo $dbh->lastInsertId();
echo "Обработано $count строк";

Сквозь объект на php

Friday, January 9th, 2009

$foo = new stdClass();
$foo->bar = ’string’;
$foo->num = 10;

foreach ($foo as $key=>$value){
echo $key . “:” . $value . “\n”;
}

получаем

bar:string
num:10

Осторожность с датой не помешает

Tuesday, December 30th, 2008

Мне для своего проекта, всегда надо точно знать какой номер недели сейчас. Я пользовался командой date() для этого и получал год и номер недели. Например 22 декабря 2008 года была 52 неделя года. просто замечательно все было пока не пришло 29 число. Потому 29 декабря 2008 года идет как неделя 00, что мягко говоря неправильно. Поэтому я окончательно уверился в том, что для точных и калледарных вычислений data вовсе не подходит. Больше всего подходит функция strftime(’%W’);

Небольшой тест показал что

strftime(’%W’, strtotime(“12/29/2008″)) // 52

strftime(’%W’, strtotime(“12/31/2008″)) // 52

strftime(’%W’, strtotime(“1/1/2009″)) // 00

strftime(’%W’, strtotime(“1/5/2009″)) // 01

Теперь это имеет больше смысла

Объект по умолчанию

Tuesday, December 23rd, 2008

Если надо быстро создать оъект где важны не методы а как способ хранения переменных то можно воспользоваться стандартным обьектом по умолчанию

$foo = new stdClass();
$foo->bar = 'string';
$foo->num = 10;