コードを短縮する方法

WBOY
WBOYオリジナル
2016-06-23 14:38:181188ブラウズ

if($_MODULE[huoqubaobei]=="2"){$arr = explode(',',$_MODULE[item_1]);  foreach($arr as $value){		  		   $item=$itemManager-> queryById ($value);		       $itemUrl = $uriManager->detailURI($item);                 $itemPicUrl = $item->getPicUrl(160);               $itemTitle = $item->title;                 $itemPrice = $item->price;                $itemsoldCount = $item->soldCount;								echo $itemUrl;				echo $itemPicUrl;				echo $itemTitle;				echo $itemPrice;				echo $itemsoldCount;						   }}else if($_MODULE[huoqubaobei]=="1"){		  $items=$itemManager->queryByKeyword("","hotsell",9);			 				  foreach($items as $item ){							       $itemUrl = $uriManager->detailURI($item);                 $itemPicUrl = $item->getPicUrl(160);               $itemTitle = $item->title;                 $itemPrice = $item->price;                $itemsoldCount = $item->soldCount; 					echo $itemUrl;				echo $itemPicUrl;				echo $itemTitle;				echo $itemPrice;				echo $itemsoldCount; 				   }}else if($_MODULE[huoqubaobei]=="3"){	   $items = $itemManager->queryByCategory($categoryId,"hotsell",10);     foreach($items as $item){		       $itemUrl = $uriManager->detailURI($item);                 $itemPicUrl = $item->getPicUrl(160);               $itemTitle = $item->title;                 $itemPrice = $item->price;                $itemsoldCount = $item->soldCount; 					echo $itemUrl;				echo $itemPicUrl;				echo $itemTitle;				echo $itemPrice;				echo $itemsoldCount;		 }}else{	     $itemUrl ="#";                 $itemPicUrl = "assets/images/nvtp.jpg";               $itemTitle = "请添加宝贝描述请添加宝贝描述请添加宝贝描述请";                 $itemPrice = 628;                $itemsoldCount =89; 					echo $itemUrl;				echo $itemPicUrl;				echo $itemTitle;				echo $itemPrice;				echo $itemsoldCount;}


省略する方法
echo $itemPicUrl;
echo $itemTitle;
echo $itemPrice;
元々はすべてを配列に追加したかったのですがそしてループしますが、この方法ではパフォーマンスが低下します。いいえ、誰がより良い方法を持っていますか






ディスカッション (解決策) への返信


各ブランチで同じ変数のセットを出力しますか?

条件構造が出てきた後に出力しないのはなぜですか?

if($_MODULE[huoqubaobei]=="2"){	$arr = explode(',',$_MODULE[item_1]);	foreach($arr as $value)	{	    $items=$itemManager-> queryById ($value);    }}elseif($_MODULE[huoqubaobei]=="1"){      $items=$itemManager->queryByKeyword("","hotsell",9);}elseif($_MODULE[huoqubaobei]=="3"){      $items = $itemManager->queryByCategory($categoryId,"hotsell",10);}if($items) {	foreach($items as $item)	{	    $itemUrl = $uriManager->detailURI($item); 		$itemPicUrl = $item->getPicUrl(160);	    $itemTitle = $item->title;		$itemPrice = $item->price;		$itemsoldCount = $item->soldCount; 		echo $itemUrl;		echo $itemPicUrl;		echo $itemTitle;		echo $itemPrice;		echo $itemsoldCount;	 }}else{	$itemUrl ="#";     $itemPicUrl = "assets/images/nvtp.jpg";    $itemTitle = "请添加宝贝描述请添加宝贝描述请添加宝贝描述请";	$itemPrice = 628;	$itemsoldCount =89; 	echo $itemUrl;	echo $itemPicUrl;	echo $itemTitle;	echo $itemPrice;	echo $itemsoldCount;}

if($_MODULE[huoqubaobei]=="2"){	$arr = explode(',',$_MODULE[item_1]);	foreach($arr as $value)	{	    $items=$itemManager-> queryById ($value);    }}elseif($_MODULE[huoqubaobei]=="1"){      $items=$itemManager->queryByKeyword("","hotsell",9);}elseif($_MODULE[huoqubaobei]=="3"){      $items = $itemManager->queryByCategory($categoryId,"hotsell",10);}if($items) {	foreach($items as $item)	{	    $itemUrl = $uriManager->detailURI($item); 		$itemPicUrl = $item->getPicUrl(160);	    $itemTitle = $item->title;		$itemPrice = $item->price;		$itemsoldCount = $item->soldCount; 		echo $itemUrl;		echo $itemPicUrl;		echo $itemTitle;		echo $itemPrice;		echo $itemsoldCount;	 }}else{	$itemUrl ="#";     $itemPicUrl = "assets/images/nvtp.jpg";    $itemTitle = "请添加宝贝描述请添加宝贝描述请添加宝贝描述请";	$itemPrice = 628;	$itemsoldCount =89; 	echo $itemUrl;	echo $itemPicUrl;	echo $itemTitle;	echo $itemPrice;	echo $itemsoldCount;}

はは、最後にまだ同じことを繰り返していました


if($_MODULE[huoqubaobei]=="2"){	$arr = explode(',',$_MODULE[item_1]);	foreach($arr as $value)	{	    $items=$itemManager-> queryById ($value);    }}elseif($_MODULE[huoqubaobei]=="1"){      $items=$itemManager->queryByKeyword("","hotsell",9);}elseif($_MODULE[huoqubaobei]=="3"){      $items = $itemManager->queryByCategory($categoryId,"hotsell",10);}if($items) {	foreach($items as $item)	{	    $itemUrl = $uriManager->detailURI($item); 		$itemPicUrl = $item->getPicUrl(160);	    $itemTitle = $item->title;		$itemPrice = $item->price;		$itemsoldCount = $item->soldCount; 		echo $itemUrl;		echo $itemPicUrl;		echo $itemTitle;		echo $itemPrice;		echo $itemsoldCount;	 }}else{	$itemUrl ="#";     $itemPicUrl = "assets/images/nvtp.jpg";    $itemTitle = "请添加宝贝描述请添加宝贝描述请添加宝贝描述请";	$itemPrice = 628;	$itemsoldCount =89; 	echo $itemUrl;	echo $itemPicUrl;	echo $itemTitle;	echo $itemPrice;	echo $itemsoldCount;}

そして、私の最後の else は、実際には elseif($_MODULE[huoqubaobei]=="4") です

セットの各ブランチで同じものを出力します変数の?
条件構造が出てきた後に出力しないのはなぜですか? 君が何を言いたいのか分からない。 。 。


各ブランチで同じ変数セットを出力しますか?

条件構造が出てきた後に出力しないのはなぜですか? 君が何を言いたいのか分からない。 。 。 你 、他の場合は、

echo $ itemtitle;
echo $ itemoldcount; ということはありますか?それ以外の場合は各ページ。

	$response= '';	switch($_MODULE[huoqubaobei]){		case "2":			$arr = explode(',',$_MODULE[item_1]);			foreach($arr as $value){				$item=$itemManager-> queryById ($value);				$items = array_push($items, $item);			}		case "1":			$items = $itemManager->queryByKeyword("","hotsell",9);		case "3":			$items = $itemManager->queryByCategory($categoryId,"hotsell",10);		default:			$items = array();	}	if($items){		foreach($items as $item){			$itemUrl = $uriManager->detailURI($item); 			$itemPicUrl = $item->getPicUrl(160);			$itemTitle = $item->title;			$itemPrice = $item->price;			$itemsoldCount = $item->soldCount; 			$response .= $itemUrl.$itemPicUrl.$itemTitle.$itemPrice.$itemsoldCount		}	}else{			$itemUrl ="#"; 			$itemPicUrl = "assets/images/nvtp.jpg";			$itemTitle = "请添加宝贝描述请添加宝贝描述请添加宝贝描述请";			$itemPrice = 628;			$itemsoldCount =89;			$response .= $itemUrl.$itemPicUrl.$itemTitle.$itemPrice.$itemsoldCount	}	echo $response;


修正しました、??ただ?。

	$response= '';	$items = array();	switch($_MODULE[huoqubaobei]){		case "2":			$arr = explode(',',$_MODULE[item_1]);			foreach($arr as $value){				$item=$itemManager-> queryById ($value);				array_push($items, $item);			}		case "1":			$items = $itemManager->queryByKeyword("","hotsell",9);		case "3":			$items = $itemManager->queryByCategory($categoryId,"hotsell",10);	}	if($items){		foreach($items as $item){			$itemUrl = $uriManager->detailURI($item); 			$itemPicUrl = $item->getPicUrl(160);			$itemTitle = $item->title;			$itemPrice = $item->price;			$itemsoldCount = $item->soldCount; 			$response .= $itemUrl.$itemPicUrl.$itemTitle.$itemPrice.$itemsoldCount		}	}else{			$itemUrl ="#"; 			$itemPicUrl = "assets/images/nvtp.jpg";			$itemTitle = "请添加宝贝描述请添加宝贝描述请添加宝贝描述请";			$itemPrice = 628;			$itemsoldCount =89;			$response .= $itemUrl.$itemPicUrl.$itemTitle.$itemPrice.$itemsoldCount	}	echo $response;


このコードは実際にはクラスとして記述し、$itemManager クラスを継承する (またはオブジェクト チェーンを形成する) 方が良いです


1.

echo $itemUrl;echo $itemPicUrl;echo $itemTitle;echo $itemPrice;echo $itemsoldCount;
の形状は

に簡略化できます。

show($itemUrl, $itemPicUrl, $itemTitle, $itemPrice, $itemsoldCount);function show() {  echo join('', func_get_args());}
関数 show Work

で実行できます。 2. 元の式は

if($_MODULE[huoqubaobei]=="2"){$arr = explode(',',$_MODULE[item_1]);	 foreach($arr as $value){		$item=$itemManager-> queryById ($value);		show($uriManager->detailURI($item),			$item->getPicUrl(160),			$item->title,			$item->price,			$item->soldCount			);	}}else if($_MODULE[huoqubaobei]=="1"){	$items=$itemManager->queryByKeyword("","hotsell",9);	foreach($items as $item ){		show($uriManager->detailURI($item),			$item->getPicUrl(160),			$item->title,			$item->price,			$item->soldCount			);	}}else if($_MODULE[huoqubaobei]=="3"){	$items = $itemManager->queryByCategory($categoryId,"hotsell",10);	foreach($items as $item){		show($uriManager->detailURI($item),			$item->getPicUrl(160),			$item->title,			$item->price,			$item->soldCount			);	}}else{	show("#",		"assets/images/nvtp.jpg",		"请添加宝贝描述请添加宝贝描述请添加宝贝描述请",		628,		89,		);}


として書くことができます。 3. 最初の 3 つの分岐が同じ数値取得メソッドを持っていることを考慮すると、別の関数

function item_show($items, $uriManager) {	foreach($items as $item){		show($uriManager->detailURI($item),			$item->getPicUrl(160),			$item->title,			$item->price,			$item->soldCount			);	}}
を書くことができます

4.コードはさらに

if($_MODULE[huoqubaobei]=="2"){$arr = explode(',',$_MODULE[item_1]);	 foreach($arr as $value){		items_show(array($itemManager->queryById($value)), $uriManager);	}}else if($_MODULE[huoqubaobei]=="1"){	items_show($itemManager->queryByKeyword("","hotsell",9), , $uriManager);}else if($_MODULE[huoqubaobei]=="3"){	items_show($itemManager->queryByCategory($categoryId,"hotsell",10), $uriManager);}else{	show("#",		"assets/images/nvtp.jpg",		"请添加宝贝描述请添加宝贝描述请添加宝贝描述请",		628,		89,		);}function show() {	echo join('', func_get_args());}function items_show($items, $uriManager) {	foreach($items as $item){		show($uriManager->detailURI($item),			$item->getPicUrl(160),			$item->title,			$item->price,			$item->soldCount			);	}}
になります

笑 最後に1階は正しいです

ちょっと修正しました、??だけ?。

	$response= '';	$items = array();	switch($_MODULE[huoqubaobei]){		case "2":			$arr = explode(',',$_MODULE[item_1]);			foreach($arr as $value){				$item=$itemManager-> queryById ($value);				array_push($items, $item);			}		case "1":			$items = $itemManager->queryByKeyword("","hotsell",9);		case "3":			$items = $itemManager->queryByCategory($categoryId,"hotsell",10);	}	if($items){		foreach($items as $item){			$itemUrl = $uriManager->detailURI($item); 			$itemPicUrl = $item->getPicUrl(160);			$itemTitle = $item->title;			$itemPrice = $item->price;			$itemsoldCount = $item->soldCount; 			$response .= $itemUrl.$itemPicUrl.$itemTitle.$itemPrice.$itemsoldCount		}	}else{			$itemUrl ="#"; 			$itemPicUrl = "assets/images/nvtp.jpg";			$itemTitle = "请添加宝贝描述请添加宝贝描述请添加宝贝描述请";			$itemPrice = 628;			$itemsoldCount =89;			$response .= $itemUrl.$itemPicUrl.$itemTitle.$itemPrice.$itemsoldCount	}	echo $response;

$itemUrl = "#";
$itemPicUrl = "assets/images/nvtp.jpg";
$itemTitle = "赤ちゃんの説明を追加してください赤ちゃんの説明を追加してください"; ;

サイクリングしたい場合は、サイクル時間を提供する必要があります。


最後の感情に従う必要はありませんか?
サイクリングしたい場合は、サイクル時間を提供する必要があります。

foreach($items as $item){ 彼と同じ回数

最後のステップで、アイテムがすべて取得されました。どうすればよいでしょうか?

最後の状況は、アイテムが何も取得されていないということです。どうすればよいですか?

実際、彼の以前の if($items) の判断は間違っており、このように判断することはできません

最終的に else if($_MODULE[huoqubaobei]=="4") で判断しました

没看到有什么东西要循环的。。
else
{
         $itemUrl ="#"; 
                $itemPicUrl = "assets/images/nvtp.jpg";
               $itemTitle = "请添加宝贝描述请添加宝贝描述请添加宝贝描述请";
                 $itemPrice = 628;
                $itemsoldCount =89; 
                    echo $itemUrl;
                echo $itemPicUrl;
                echo $itemTitle;
                echo $itemPrice;
                echo $itemsoldCount;
}

1、形如

echo $itemUrl;echo $itemPicUrl;echo $itemTitle;echo $itemPrice;echo $itemsoldCount;
的可简化为
show($itemUrl, $itemPicUrl, $itemTitle, $itemPrice, $itemsoldCount);function show() {  echo join('', func_get_args());}
函数 show 中可做各种美化工作

2、原式就可写作
if($_MODULE[huoqubaobei]=="2"){$arr = explode(',',$_MODULE[item_1]);	 foreach($arr as $value){		$item=$itemManager-> queryById ($value);		show($uriManager->detailURI($item),			$item->getPicUrl(160),			$item->title,			$item->price,			$item->soldCount			);	}}else if($_MODULE[huoqubaobei]=="1"){	$items=$itemManager->queryByKeyword("","hotsell",9);	foreach($items as $item ){		show($uriManager->detailURI($item),			$item->getPicUrl(160),			$item->title,			$item->price,			$item->soldCount			);	}}else if($_MODULE[huoqubaobei]=="3"){	$items = $itemManager->queryByCategory($categoryId,"hotsell",10);	foreach($items as $item){		show($uriManager->detailURI($item),			$item->getPicUrl(160),			$item->title,			$item->price,			$item->soldCount			);	}}else{	show("#",		"assets/images/nvtp.jpg",		"请添加宝贝描述请添加宝贝描述请添加宝贝描述请",		628,		89,		);}


3、考虑到前三个分支存在相同的取数方法,于是可以再写一个函数
function item_show($items, $uriManager) {	foreach($items as $item){		show($uriManager->detailURI($item),			$item->getPicUrl(160),			$item->title,			$item->price,			$item->soldCount			);	}}


4、代码就进一步变为
if($_MODULE[huoqubaobei]=="2"){$arr = explode(',',$_MODULE[item_1]);	 foreach($arr as $value){		items_show(array($itemManager->queryById($value)), $uriManager);	}}else if($_MODULE[huoqubaobei]=="1"){	items_show($itemManager->queryByKeyword("","hotsell",9), , $uriManager);}else if($_MODULE[huoqubaobei]=="3"){	items_show($itemManager->queryByCategory($categoryId,"hotsell",10), $uriManager);}else{	show("#",		"assets/images/nvtp.jpg",		"请添加宝贝描述请添加宝贝描述请添加宝贝描述请",		628,		89,		);}function show() {	echo join('', func_get_args());}function items_show($items, $uriManager) {	foreach($items as $item){		show($uriManager->detailURI($item),			$item->getPicUrl(160),			$item->title,			$item->price,			$item->soldCount			);	}}


这段才是最省事的!

还可以这样写~  


你在每个分支里输出同样的一组变量?
为何不在条件结构出来后在输出? 不明白你的意思。。。

把那些变量的地方都放到外面来

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。