配列の数だけループ

foreachで配列の数だけループできたんですね。試しに簡略化したプログラムを書いて実行…。
<?php
$arr = array('Apple', 'Google', 'Microsoft');
foreach($arr as $filename) {
var_dump($filename);//配列の値
}
foreach($arr as $kye => $filename) {
var_dump($kye);//配列のキー
}
結果。
string(5) "Apple" string(6) "Google" string(9) "Microsoft" int(0) int(1) int(2)
単純化してみてやっと理解できたような…。
という事は…。
さくらのレンタルサーバのOSのバージョンアップでphpの動作が変わった: STP^3
お絵かき掲示板交流サイトのトップページのコードを書きましたが…。
<?php
$arr = array();
foreach(glob('cgi/{foo,bar,baz}/index.html', GLOB_BRACE) as $filename) {
$arr[$filename] = $filename;
}
$i = 1;
foreach($arr as $key => $value){
var_dump($key);
if($i >= 3){break;}
$i++;
}
?>
配列の数が3でカウンターが3になったらbreak…。
エラーメッセージはでないし実行結果も問題ないのですが、この人配列の数だけループする事を知らないんじゃない?とphpの基礎がわかっている方は思ったでしょうね。

カウンターを回してbreakする必要があるとしたら例えば配列の数が30で上位3件でループを終了したい時ですね…。

他にも…。

php Brackets 変数 シングルクオート

書き間違いがあればエラーになるから文法がわからなくても何とかなる…ではまずいのでコードを調べて無駄な動作を減らし、メモリを消費する変数がループ外に残らないようにunset。

お絵かき掲示板交流サイトのトップページの負荷がこれで軽く?
<?php
$time_start = microtime(true);
(ここに処理が入る)
$time = microtime(true) - $time_start;
echo "{$time} 秒";
?>
書き直し前の速度を計測するのを忘れていました…。
書き直し後に計測してみたところ、0.097969055175781 秒…でした。

POTI-board用テンプレートPINKの動的パレットを修正しました。

動的パレットスクリプトのMatrix関連の不具合を修正しました。

発生していた問題。

お絵かき掲示板 POTI−board 動的パレットスクリプト

モノクロを「現在」で「取得」。

お絵かき掲示板 POTI−board 動的パレットスクリプト

「取得」した書式が正しくないので正しく色が「セット」されない。

お絵かき掲示板 POTI−board 動的パレットスクリプト

書式を修正して「セット」すれば正しく色が入るが「あいうえお」というパレット名が「あいうえ」になる。
14番目のパレットの色が正しくセットされない。

POTI-boardの動的パレットスクリプトはテンプレートに組み込まれているので、修正されたテンプレートに入れ替えればこれらの不具合は解消します。

POTI-board用テンプレート PINKは、lot.190516で対応しました。

お絵かき掲示板交流サイトの動的パレットの不具合も解消していますのでMatrix機能をぜひ使ってみてください。
パレットをインポートしたり、エクスポートしたりする事ができる便利な機能です。

さくらのレンタルサーバのOSのバージョンアップでphpの動作が変わった

サーバのOSのバージョンがあがっただけなのにお絵かき掲示板交流サイトの掲示板の並び方が変わってしまいました。
phpのバージョンは7.2のままです。
XAMPPでは意図通りの動作をするし、さくらのレンタルサーバでも昨日まで問題ありませんでした。
メンテナンスの内容。
FreeBSDのアップデートに伴う変更点 (2019/4/9 更新) – さくらのサポート情報

レンタルサーバのOSである「FreeBSD」のバージョンを9.x系から11.x系へ変更します。
問題が発生したプログラム。
<?php
$arr = array();
foreach(glob('cgi/{foo,bar,baz}/index.html', GLOB_BRACE) as $filename) {
$arr[$filename] = $filename;
}
$i = 1;
foreach($arr as $key => $value){
var_dump($key);
if($i >= 3){break;}
$i++;
}
?>
これまでは、
string(18) "cgi/foo/index.html" string(18) "cgi/bar/index.html" string(18) "cgi/baz/index.html"
foo,bar,baz だったのに、

string(18) "cgi/bar/index.html" string(18) "cgi/baz/index.html" string(18) "cgi/foo/index.html"
bar,baz,foo の順になってしまいました。
foreach(glob('cgi/{foo,bar,baz}/index.html', GLOB_BRACE) as $filename) {
$arr[$filename] = $filename;
}
このコードでは期待通りに並ばないので書き直す事にしました。
<?php
$arr = array('cgi/foo/index.html', 'cgi/bar/index.html', 'cgi/baz/index.html');
for($i = 0; $i <= 2; $i++){
$filename = $arr[$i];
var_dump($filename);
}
?>
XAMPPでも、さくらのレンタルサーバでも、
string(18) "cgi/foo/index.html" string(18) "cgi/bar/index.html" string(18) "cgi/baz/index.html"
が返ってくるようになりました。

POTI-board改のメンテナンスに参加した経験が無かったら書き直せなかったかも…。

お絵かき掲示板 ネコ娘 paintBBS NEO
お絵かき掲示板はこちら。