Browsing articles in "PHP"
2月
20
2010
20
2010
PHPで大きな整数を表示する方法
PHPで普通に大きな整数を表示しようとすると、
<?php
$n = pow(10,20);
echo $n;
?>
こんな感じになってしまいます。
1.0E+20
なにこれきもちわるい。
そんなわけでこんな感じにするといいですよ。
<?php
$n = pow(10,20);
printf('%f', $n);
?>
100000000000000000000.000000
その他の事例
小数点以下表示しない
<?php
$n = pow(10,20);
printf('%.0f', $n);
?>
100000000000000000000
PHPの値として受け取ってから表示
<?php
$n = pow(10,20);
echo sprintf('%.0f', $n);
?>
100000000000000000000
ちなみに。。
<?php
$n = pow(10,30);
printf('%.0f', $n);
?>
1000000000000000019884624838656
何か下の方にゴミが。。
12月
27
2009
27
2009
美しきXOOPSの世界
ホダ塾 – もっとXOOPS!より、HD-1.0.4を使用。
/hd_full_1_0_4/html/modules/legacy/include/groupperm.php 35行目から
if (is_array($_POST['perms']) && !empty($_POST['perms'])) {
$gperm_handler = xoops_gethandler('groupperm');
foreach ($_POST['perms'] as $perm_name => $perm_data) {
if (false != $gperm_handler->deleteByModule($modid, $perm_name)) {
if (is_array($perm_data['groups'])) {
foreach ($perm_data['groups'] as $group_id => $item_ids) {
foreach ($item_ids as $item_id => $selected) {
if ($selected == 1) {
// make sure that all parent ids are selected as well
if ($perm_data['parents'][$item_id] != '') {
$parent_ids = explode(':', $perm_data['parents'][$item_id]);
foreach ($parent_ids as $pid) {
if ($pid != 0 && !in_array($pid, array_keys($item_ids))) {
// one of the parent items were not selected, so skip this item
$msg[] = sprintf(_MD_AM_PERMADDNG, '<b>'.$perm_name.'</b>', '<b>'.$perm_data['itemname'][$item_id].'</b>', '<b>'.$group_list[$group_id].'</b>').' ('._MD_AM_PERMADDNGP.')';
continue 2;
}
}
}
$gperm =& $gperm_handler->create();
$gperm->setVar('gperm_groupid', $group_id);
$gperm->setVar('gperm_name', $perm_name);
$gperm->setVar('gperm_modid', $modid);
$gperm->setVar('gperm_itemid', $item_id);
if (!$gperm_handler->insert($gperm)) {
$msg[] = sprintf(_MD_AM_PERMADDNG, '<b>'.$perm_name.'</b>', '<b>'.$perm_data['itemname'][$item_id].'</b>', '<b>'.$group_list[$group_id].'</b>');
} else {
$msg[] = sprintf(_MD_AM_PERMADDOK, '<b>'.$perm_name.'</b>', '<b>'.$perm_data['itemname'][$item_id].'</b>', '<b>'.$group_list[$group_id].'</b>');
}
unset($gperm);
}
}
}
}
} else {
$msg[] = sprintf(_MD_AM_PERMRESETNG, $module->getVar('name').'('.$perm_name.')');
}
}
}
なんじゃこりゃー!!
12月
15
2009
15
2009
PHPは実行の途中でブラウザを閉じると、処理が中断されるのか?
結論としては、
- ignore_user_abort という設定値(php.iniなd)で処理を止めるかどうかを決められる
- ignore_user_abortがfalseであっても、止まらないことがある
1はそのままで自明なのですが、2に関しては、どうやら何かを出力しないとブラウザが閉じられたかどうか分からない模様?なので、何か例えば、バックグラウンドで重い処理をしたいときなど、とりあえず走りきってほしいときには、こっそりiframeやらimgタグなどを仕込んで、何も出力しないPHPにアクセスさせるようにすれば、実現可能じゃなかろうか。

An article by yuyak