配列が存在するか調べるときに
if (isset($var['p'])) {
// 存在するときの処理
}
としますが
$var['p'] = null;
var_dump(isset($var['p']));
// false
と null が入っていると false になってしまいます
配列のキーが存在するかをみて
if (array_key_exists('p', $var)) {
// キー存在するときの処理
}
としてあげたら意図した処理になります
ひびのきろく
配列が存在するか調べるときに
if (isset($var['p'])) {
// 存在するときの処理
}
としますが
$var['p'] = null;
var_dump(isset($var['p']));
// false
と null が入っていると false になってしまいます
配列のキーが存在するかをみて
if (array_key_exists('p', $var)) {
// キー存在するときの処理
}
としてあげたら意図した処理になります
Cakephp 2.5.3でコントローラーのテストのとき
$this->testAction('/Sample/save', ['return' => 'vars']);
$flash = CakeSession::read('Message.flash');
$this->assertEquals('保存しました', $flash);
とすると CakeSession::read(‘Message.flash’) がとれませんでした
$this->testAction('/Sample/save');
$flash = CakeSession::read('Message.flash');
$this->assertEquals('保存しました', $flash);
として flash をとってやって
$this->vars
でパラメータは取ればとりあえず解決
詳しく理解しないとですが、ここまでで
phpで配列のキーの先頭をとってみました
まず関数を調べる
配列内の現在の要素を返す
配列の内部ポインタを先頭の要素にセットする
返り値に先頭の値が返ってきます
$list = [
'A' => 'a',
'B' => 'b',
'C' => 'c',
];
var_dump(current($list));
// string(1) "a"
var_dump(reset($list));
// string(1) "a"
といった感じで、配列を宣言しただけだと、同じ結果が返ります
配列のキーすべて、あるいはその一部を返す
$list = [
'A' => 'a',
'B' => 'b',
'C' => 'c',
];
var_dump(array_keys($list));
/*
array(3) {
[0] =>
string(1) "A"
[1] =>
string(1) "B"
[2] =>
string(1) "C"
}
*/
とキーが配列で返ります
組み合わせて
$list = [
'A' => 'a',
'B' => 'b',
'C' => 'c',
];
$keys = array_keys($list);
var_dump(reset($keys));
// string(1) "A"
これがいいかなと思っています
ECCUBEで「data/cache/../mtb_constants_init.php が存在しません」のエラーが出ました
プログラムとしては
data/class/SC_Initial.php L182 defineParameter
data/class/cache/mtb_constants.php があるか
なければ data/class/cache/../mtb_constants_init.php からコピー
としてる箇所で、下記で解決
$ mkdir data/class/cache
cacheディレクトリがないのが原因でした
git管理しているときは、
$ touch data/class/cache/.gitkeep
としておいて、git管理しましょう