こんなPHPコードを書く奴は今すぐ懺悔しろ その1

公開日: : 最終更新日:2011/12/14 php

たまにイラッとすると突発的にこのシリーズ書いていこうかと思います。
PHPコードでたまに「ありえない」コードを書く人が多いので・・・懺悔させるためによりよいコードを書いてもらうためのものですよ。

配列型かそうじゃないかで処理を分けすぎ

たまにDBとか何らかのデータを受け取ったときに1件かそうじゃないかでデータの形が変わっちゃうから処理分岐してるのありますよね。
例えばこんな感じ。

まずはデータ形式がこんな感じだとします。


//なんか処理をして、1件の場合は以下のような配列
$_data_array = array(
	"name" => "Bob おじさん",
	"favorite" => "台風の中心に行くこと"
);

//複数の場合はこんな形の配列を返すとします

$_data_array = array(
	array(
		"name" => "Bob おじさん",
		"favorite" => "台風の中心に行くこと"
	),array(
		"name" => "Jenkins おじさん",
		"favorite" => "毎日同じ事を飽きずにやること"
	)
);

こんな時にループ処理で各値を処理する時に配列の形が違うからこんな書き方してません・・・?

if(!isset($_data_array['name'])){
	foreach($_data_array as $_key => $_value){
		// $_value["key名"]で取れるので処理処理。
		// 処理
		// 処理
	}
}else{
	//$_data_array['key名']で取れるので処理処理。
	//処理
	//処理
}
//TODO 分岐させたが、処理が分散してる!

これは絶対ダメコードですよ・・・。なんせ処理が2重になってます。
絶対ダメ、読みにくい。

解決方法は?

スマートに書くとわかりにくいのでこれで。

if(isset($_data_array['name'])){
	//一旦配列をコピー
	$_data_array_tmp = $_data_array;
	//$_data_arrayを綺麗にする(unset()あってもいいと思います)
	$_data_array = array();
	//コピーした配列に添字をつけて戻す
	$_data_array[] = $_data_array_tmp;
}

これで全部同じ形式になるかと。
処理は全部同じになりますね、良かった良かった。

関連記事

PHPカンファレンス会場風景

PHPカンファレンス2010 1日目(ビジネスデイ) に参加してきたのでレポート!

PHPカンファレンス2010が開催されました!早速ビジネスデイに参加してきたのでレポートを投下!

記事を読む

no image

PHPカンファレンス2010 2日目(テックデイ)にも参加してきたのでレポート!

PHPカンファレンス2010、2日目のテックデイにも参加してきました! (前から2列目でUL20Aで

記事を読む

Message

メールアドレスが公開されることはありません。

Target:mbox

自腹で購入した商品色々レビュー中!

商品紹介・レビュー記事特集!

Target:static mbox(mbox create

no image
Nintendo Switch で使える激安USB 3.0ケーブル

Nintendo Switchを買いました!とりあえず色々まずはやって

AMPで作ったページを実際にGoogle検索結果経由でみた時と同じキャッシュ表示にする方法

今日は技術的な話。AMPページ対応を行った人も最近増えてきたと思うので

分散投資ロボアドバイザーのTHEOを大体半年間回したら利率10%近くまでになったので、トランプさんありがとうと思った

(こちらの記事は私が独自に当サービスを使ってみた結果の報告です。特にT

Macでの作業効率アップ!nativefierを使ってWebアプリをアプリケーション化

Console heaven / bartosz.maciejew

no image
2016年の目標

新年明けましておめでとうございます。 年末年始は色々とバタバタしまし

→もっと見る

PAGE TOP ↑