phpで配列が存在するかのチェック

配列が存在するか調べるときに

if (isset($var['p'])) {
  // 存在するときの処理
}

としますが

$var['p'] = null;
var_dump(isset($var['p']));
// false

と null が入っていると false になってしまいます

配列のキーが存在するかをみて

if (array_key_exists('p', $var)) {
  // キー存在するときの処理
}

としてあげたら意図した処理になります

Cakephpのテスト時にSessionの値が取れない

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で配列のキーの先頭を取得する

phpで配列のキーの先頭をとってみました

まず関数を調べる

PHP: current – Manual

配列内の現在の要素を返す

PHP: reset – Manual

配列の内部ポインタを先頭の要素にセットする
返り値に先頭の値が返ってきます

$list = [
  'A' => 'a',                                                                                         
  'B' => 'b',
  'C' => 'c',                                                                                         
];
var_dump(current($list)); 
// string(1) "a" 
var_dump(reset($list));                                                                               
// string(1) "a"

といった感じで、配列を宣言しただけだと、同じ結果が返ります

PHP: array_keys – Manual

配列のキーすべて、あるいはその一部を返す

$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 が存在しません」のエラー

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管理しましょう