2014-02-06 57 views
0

我有一個數組,其中的鍵是文件名,值是魚的名稱。現在,這個循環打印出隨機選擇的魚的文本,然後它遍歷img目錄並打印每個圖像。我如何「鏈接」它使魚的形象corrsponse與名稱?就像,如果它輸出好的!你抓到一個小嘴巴!然後我會希望它只輸出smbass.gif。PHP - 從數組中獲取單個鍵,將其與值匹配,同時打印

該php文件位於根目錄下,而images文件夾爲root/img/smbass.gif,例如,

<p class="fishes"> 
<form action="fishing.php" method="post"> 
    <?php 

    $fish = array('catfish.gif' => 'catfish', 'lmbass.gif' => 'large-mouth bass', 'smbass.gif' => 'small-mouth bass', 'shiner.gif' => 'shiner', 'perch.gif' => 'perch', 'pickerel.gif' => 'pickerel', 'minnow.gif' => 'minnow', 'sunfish.gif' => 'sunfish'); 
    $rand = array_rand($fish); 
    //link file name (key) to value 

    echo "Nice one! You caught a " . $fish[$rand] . "!"; 

    $files = scandir('img'); 
     if ($files !== false) { 
      foreach($files as $f) { 
       if ($f == '..' || $f == '.' || substr($f, -strlen(".DS_Store")) === ".DS_Store") continue; 
      echo '<li class="fish_pic"><img src="img/'.$f.'" alt="'.$f.'" title="" class="fish"></li>'."\n"; 
      } 
     } 
    ?> 
</p><!-- close class="fishes" --> 
    <p><input type="submit" class="btn btn-primary" value="Go Fishing!"></p> 
</form> 
+0

由於圖像名稱是鍵,'array_rand()'返回鍵...'$ rand'應該包含圖像文件名? – CD001

+0

夠簡單。我對PHP並不擅長,所以有時我會想念那些明顯的。你爲什麼不提交這個作爲答案,所以我可以選擇它? – bealstreetmedia

+0

heh - 剛做過;但我很快拼湊了一個腳本的調整版本,並在我的本地主機上運行它,以確保理論在提交答案之前工作:) – CD001

回答

0

嘗試是這樣的:

<form action="fishing.php" method="post"> 

<?php 
$fish = array(
    'catfish.gif' => 'catfish', 
    'lmbass.gif' => 'large-mouth bass', 
    'smbass.gif' => 'small-mouth bass', 
    'shiner.gif' => 'shiner', 
    'perch.gif' => 'perch', 
    'pickerel.gif' => 'pickerel', 
    'minnow.gif' => 'minnow', 
    'sunfish.gif' => 'sunfish' 
    ); 

$rand = array_rand($fish); 
$sImageOut = ""; 

//check the image 
// - yes, error supression is normally evil 
// - and assigning variables in this way isn't exactly pretty 
// ... but it works 
if(list($iImgX, $iImgY, $iImgType, $sImgAttr) = @getimagesize(__DIR__ . '/img/' . $rand)) { 
    $sImageOut = "<div><img src=\"img/{$rand}\" alt=\"{$fish[$rand]}\" style=\"width: {$iImgX}px; height: {$iImgY}px; border: 1px solid #cccccc;\" /></div>\n"; 
} 

//output 
echo "<p>Nice one! You caught a {$fish[$rand]}!</p>\n{$sImageOut}"; 
?> 

<p><input type="submit" class="btn btn-primary" value="Go Fishing!"></p> 
</form> 

由於圖像名稱是關鍵,array_rand()返回鍵... $rand包含圖像文件名。

我在那裏使用getimagesize(),所以如果由於某種原因你的圖像不存在,它不會創建「duff」輸出 - 不是最簡單的代碼,但它可以作爲一個例子。

相關問題