2

私は次のPHPコードを持っています:

<?php

//code above    
$pic_1 = $afil['image_1'];  
$pic_2 = $afil['image_2'];
$pic_3 = $afil['image_3'];
$pic_4 = $afil['image_4'];
$pic_5 = $afil['image_5'];
$pic_6 = $afil['image_6'];
$pic_7= $afil['image_7'];
$pic_8 = $afil['image_8'];
$pic_9 = $afil['image_9'];
$pic_10 = $afil['image_10'];

if ($pic_1 = "")
{
$pic_1 = //defaultpic - to be defined, same as below
}

if ($pic_2 = "")
{
$pic_2 = //defaultpic
}
?>

写真ごとにこれらの「if」ステートメントを繰り返すのではなく($ pic 10まで)、誰かがそれを行うためのよりエレガントで効率的な方法を指摘できるかどうか疑問に思いました。私はphpにまったく慣れていませんが、これは私が遭遇した新しい状況です。よろしくお願いします。

4

2 に答える 2

4

次のように、1 つのステートメントだけでそれらを使用arraysしてループします。if

 foreach($afil as $k => $v) {
  if(empty($v))
    $afil[$k] = ...//default pic
 }

または、追加のアレイが必要な場合$pics(おそらく将来の使用のために)、

foreach($afil as $k => $v) {
  $pics[$k] = $v;
  if(empty($v))
    $pics[$k] = ...//default pic
 }

また、=代入演算子です。比較 (または条件チェック) には、==or ===(タイプセーフ) を使用する必要があります。

編集:

 $afil = mysql_query(...);
 while($row = mysql_fetch_array($afil)) {
  //In here, say you create an array $result_rows with all the rows
  $result_rows[] = $row;
 } 

次に、$result_rowsforeach で使用します。

于 2012-12-03T20:28:46.780 に答える
0

Arraysは最適なソリューションです。

$pic = array('image_1', 'image_2', 'image_3'....);

for ($i = 0; $i < count($pic); $i++){
if ($pic[$i] == ""){
$pic[$i] = //defaultpic - 
}

}
于 2012-12-03T20:29:46.133 に答える