2014年03月22日

[PHP] 配列の空要素を削除する

フォームで入力させて、入力項目がオプションの時等に、配列が空の場合がある。
計算したい時や空を除いて処理したい時とか、要素としては邪魔なので削除したい。
そんな時には、array_filter()を使用するの方法があるようだ。

配列の空要素を削除する

真ん中が空の配列を作成して、array_filter()を実行してみる。

$valueArray = array(1,2,'',4,5);
print_r($valueArray);
$valueArray = array_filter($valueArray);
print_r($valueArray);

結果は以下のようになる。

Array ( [0] => 1 [1] => 2 [2] => [3] => 4 [4] => 5 ) 
Array ( [0] => 1 [1] => 2 [3] => 4 [4] => 5 ) 

ちゃんと空の3つめの要素が削除されている。

配列の添え字を振りなおす

array_filter()を実行するだけだと、配列の添え字は元のまま。
添え字でアクセスする場合等は振り直したい。
そういう場合は、array_values()を更に実行すると振り直してくれる。

$valueArray = array(1,2,'',4,5);
$valueArray = array_values(array_filter($valueArray))
print_r($valueArray);

結果は以下のようになり、0、1、3、4だったのが、0、1、2、3に変わっている。

Array ( [0] => 1 [1] => 2 [2] => [3] => 4 [4] => 5 ) 
Array ( [0] => 1 [1] => 2 [2] => 4 [3] => 5 )

なるべく配列の順序には依存しないプログラムにしたいけど、何かあった時には使えそう。

参考

タグ:PHP cakephp
posted by lute at 21:00| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2014年03月21日

[PHP] 平均値を求める

今回はCakePHPではなく、普通のPHPライブラリを使用する。

<?php
$speed = array(10.463,12.44,11,25.7,18,5.067);
$total = array_sum($speed);
$average = round($total/count($array),2);
?>

array_sum()で配列の合計値を求めて、countで配列数を数えて割り算している。
roundは、計算結果を小数点有効桁数2桁で四捨五入している。

各関数の説明

関数名

説明

array_sum() 配列の中の値の合計を計算する
count() 配列の要素を数える
round() 浮動小数点を丸める

もし、切り捨てで計算したいなら、roundで第3引数を以下のように指定すれば良いみたい。

$average = round($total/count($array),2,PHP_ROUND_HALF_DOWN);

参考

タグ:PHP
posted by lute at 22:00| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。