2012-07-26 14 views
0

可有人請點我在正確的方向我撥碼開關從目前上市的類似下面轉換,從一個CSV文件,而不是被吸引:PHP - 轉換swithch爲.csv文件讀取方法

$video = (isset($_GET['video']) ? $_GET['video'] : null); 

if($video) { 
    switch($video) { 
     case "apple": 
        $Heading ='Apple Heading'; 
      $Videonum ='1'; 
      $Content ='<h2>Apple Sub Heading</h2> 
           <p>Apple content</p>'; 
      $SideContent ='Apple side content'; 
break; 

我將結束了很多的情況下,它會更容易管理一個.csv文件 - 謝謝

回答

0

我認爲你需要一個二維數組與標識符('蘋果',...)作爲關鍵內部陣列。通過解析CSV文件,您將獲得一個包含多行的數組,但您需要搜索包含所需數據的行。也許你也可以保存包含必要數據的PHP文件,甚至可以使用數據庫(這可能是最常見的)。

目標陣列,因爲我會用它:

$data = array(
    'apple' => array(
     'heading' => 'Apple Heading', 
     'video_num' => 1, 
     'content' => '<h2>Apple Sub Heading</h2> 
         <p>Apple content</p>', 
     'side_content' => 'Apple side content', 
    ), 
    /* more manufacturer sub-arrays */ 
); 

在你可以從陣列只是讀訪問整個數據這第一種情況:

if(!empty($_GET['video']) && isset($data[$_GET['video']])) 
{ 
    var_dump(
     $data[$_GET['video']]['heading'], 
     $data[$_GET['video']]['content'] 
    ); 
} 
else 
{ 
    echo '<p class="error">No video specified or "' . $_GET['video'] . '" is not available.</p>'; 
} 

僅供參考;從一個CSV文件中檢索陣列:

$data = array(
    1 => array(
     'manufacturer' => 'Apple', 
     'heading' => 'Apple Heading', 
     'video_num' => 1, 
     'content' => '<h2>Apple Sub Heading</h2> 
         <p>Apple content</p>', 
     'side_content' => 'Apple side content', 
    ), 
    /* more rows */ 
); 
+0

我不確定您的報價優於pr evious - 你能否向一位noobie解釋一下好嗎? 此刻此刻引用開關信息,我使用的回聲像 <?php echo $ Videonum; ?> 我現在將如何參考信息 - 是這樣嗎?對不起,我完全缺乏PHP的知識 – flatcap 2012-07-26 11:25:30

+0

如果這個答案不夠自我解釋,我不知道如何以更簡單的方式表達它。你知道這是一個程序員論壇嗎?例如'<?php echo $ Videonum; ?''會變成'<?php echo $ data [$ _ GET ['video']] ['video_num']; ?> – feeela 2012-07-26 13:31:56

0

閱讀CSV文件

$data = array(); 
$fp = fopen('manufacturer.csv', 'r'); 
while (!feof($fp)) { 
    $line = explode(';',fgets($fp)); 
    $data[$line[0]]['heading'] = $line[1]; 
    $data[$line[0]]['video'] = $line[2]; 
    $data[$line[0]]['content'] = $line[3]; 
    $data[$line[0]]['side'] = $line[4]; 
} 
fclose($fp); 

您的CSV看起來像

apple;Apple Heading;1;<h2>Apple Sub Heading</h2><p>Apple content</p>;Apple side content 
microsoft;MS Heading;1;<h2>MS Sub Heading</h2><p>MS content</p>;MS side content 
... 

然後存取權限與製造商的名稱

if(isset($data[$_GET['video']] && !empty($_GET['video']))){ 
    $Heading = $data[$_GET['video']]['heading']; 
    $Videonum = $data[$_GET['video']]['video']; 
    $Content = $data[$_GET['video']]['content']; 
    $SideContent = $data[$_GET['video']]['side']; 
} 
內容
+0

嘿,對不起,因爲我缺乏知識 - 我很困惑現在哪個回覆更好? – flatcap 2012-07-26 11:26:43

+0

我使用au csv文件回答你的問題,但結果是一樣的。 – DoubleYo 2012-07-26 11:49:41

+0

我嘗試了上述方法,但我修改了這一行: if(isset($ data [$ _ GET ['video']])&&!empty($ _ GET ['video'])){ 讓它工作。 我被告知我應該使用這種方法,而不是http://php.net/manual/en/function.fgetcsv.php?但不知道如何暗示它。 與您的代碼,我沒有收到錯誤消息,但它沒有繪製內容。 – flatcap 2012-07-26 12:46:36