お勉強 :  大きな勘違い 

PHPで入力データによって意図したように動くときと動かない
ときがあり、その解決に結構時間がかかってしまったという
お話です。

PHPでは配列がいわゆる配列ではなくて「順序つきマップ」
だと公式ドキュメントに書いてあるのですけど、その意味を
はっきりと体感するようになりました。

これまでは、

$a[2]="b";
$a[1]="a";
$a[3]="c";

こういう配列を foreach($a as $key => $value) で
ループさせると、

1回目・・・$key = 1 $value="a"
2回目・・・$key = 2 $value="b"
3回目・・・$key = 3 $value="c"

と出てくるとず~~~っとおもいこんでいたのですが、
PHPの配列(っぽいもの)のキーはキーとしての意味しかなく、
順序をあらわすものではないといことでした。
実際には、代入した順序で扱われてこう出る。

1回目・・・$key = 2 $value="b"
2回目・・・$key = 1 $value="a"
3回目・・・$key = 3 $value="c"

配列っぽいものを配列順に使用したい、という場合は
一旦 ksort してから foreach にするか、あるいは
for ループで添え字を指定すればよいのだった。

ハマる人も多いらしく、ネット上にこの部分を記載している
先人たちも多かったけど、そもそも配列でそんなことになって
いるとは思わなかったので気付くのに時間がかかってしまった。

さて、今晩の体重は 79.6kg でした。


[ 2017/06/20 22:57 ] お勉強 | TB(0) | CM(0)

お勉強 :  SalesForceのレポートとたたかう 

いままでExcelで膨大なデータのグラフ化などなどしてきた
わけですが、いったんExcelにデータを落とさなくても
SalesForce上で一気にできないかな?という話がでました。

正直くわしくなくて、レポート機能も表にして出すくらい
しか知らなかったので、ヘルプを見ながら悪戦苦闘。
項目をキーにしてグループ化できるところまでは理解
したが・・・

グループ自体の数を合計したいと思っていろいろ試すが、
どうやらSalesForce上ではこれができないらしく、
惜しい!というところで断念となりました。

もともと親要素に数値データとして1を入れ込んでおき、
あとでこれを集計する、という方法で対応できるらしい
のですが、それは自部門では対応できませんでした。

やっぱり独特な作りのものって難しいなあ。
さて、今晩の体重は 79.9kg でした。


[ 2017/06/08 21:55 ] お勉強 | TB(0) | CM(0)

お勉強 :  MargeAreaが超便利だった 

EXCELのVBAで、WorksheetFunction.Index と Match を使って
目的データが書かれている行を特定して、その行を非表示にする
という動作をさせたかった。

非表示は Rows.Hidden = true でいいらしいことは理解して、
動くスクリプトもできてきた、と思ったのもつかの間、
あるセルだけ意図したように動かない。

どうやら複数行を「セルの結合」しているセルで実行すると、
結合している行の中で最初の行だけ非表示になり、その他の
行は残ってしまいました。

もしや、行をすべて何かしらの方法で割り出して1行ずつ
処理しないのかとも思いましたが、MargeArea を使えば
一発で処理できることを理解ました。
MargeArea.EntireRow.Hidden = True にすれば、
所属している行はまとめて非表示にできた。

ついでに MargeArea は結合していないセルでも動くので、
あっさりと問題は解決できたのでした。

さて、今晩の体重は 80.4kg でした。


[ 2017/06/06 23:14 ] お勉強 | TB(0) | CM(0)