2014-02-11 111 views
0

我有一個PHP multidimesional陣列:顯示點擊陣列項目

<script src="http://code.jquery.com/jquery-1.11.0.js"></script> 
<?php 
$brand = array (
"nike" => array (
       array(all deal 1 info in here), 
       array(all deal 2 info in here), 
       array(all deal 3 info in here)), 
"puma" = array(
       array(all deal 1 info in here), 
       array(all deal 2 info in here), 
       array(all deal 3 info in here)), 
"addidas" = array(
       array('logo'=>'images/addidas.png', 'description'=>'some addidas text'), 
       array(all deal 2 info in here), 
       array(all deal 3 info in here)), 
); 
?> 
<script type="text/javascript"> 
var brand = <?php echo json_encode($brand) ?>; 
for (var n in brand){ 
for (var i in brand[n]){ 
    // for jQuery("body").append jQuery is necessary, but of course you can work otherwise with this data, too 
    jQuery("body").append('<a href="' + brand[n][i].logo + '">' + brand[n][i].description + '</a>'); 
    } 
} 

我想這樣做是將此轉換成JavaScript數組,遍歷並打印出每個品牌的超鏈接。因此,如果有人點擊addidas例如,這將顯示在容器div的內容。到目前爲止,我已經嘗試了這些建議,但其行爲並不像我想要的那樣。

我想展示品牌名稱作爲一個div超鏈接,如果您單擊說阿迪達斯的鏈接,它會拉只是到內容DIV的阿迪達斯內容:

<div id="brand-nav"> 
<a links here> 
</div> 

<div id="deals-content"> 
on click of a link, brand specific content here 

</div> 

謝謝大家對你善良的貢獻,所以任何額外的幫助非常感謝。

Volterony

回答

0

,您可以通過json_encode和疊代和例如後其轉化爲一個JSON陣列

var brand= "<?php echo json_encode($brand) ?>" 
+0

你的意思是說多維數組不於JavaScript中?如果是的話那就錯了。 –

+1

你應該真的做'var brand = <?php echo json_encode($ brand)?>;'。這樣它就已經是一個對象,並且不需要被解析。 –

+0

在javascript中的multidimensionnal數組確實是嵌入的數組,並且不同於PHP多維數組 – Chopchop

0

轉換你的PHP數組轉換成JavaScript數組其附加到主體:

var brand = <?php echo json_encode($brand) ?>; 
for (var n in brand){ 
    for (var i in brand[n]){ 
     // for jQuery("body").append jQuery is necessary, but of course you can work otherwise with this data, too 
     jQuery("body").append('<a href="' + brand[n][i].logo + '">' + brand[n][i].description + '</a>'); 
    } 
} 
+0

嗨flixer, – Volterony

+0

謝謝你幫助我。我已經更新了這個問題,但仍然沒有更進一步。 – Volterony

0

我會改變你的陣列的結構之前,我將其轉換爲JavaScript的與上述的方法之一:

$brands = array(
    array(
     'name' => 'nike', 
     'deals' => array(
      array('all deal 1 info in here'), 
      array('all deal 2 info in here'), 
      array('all deal 3 info in here'), 
     ), 
    ), 
    array(
     'name' => 'puma', 
     'deals' => array(
      array('all deal 1 info in here'), 
      array('all deal 2 info in here'), 
      array('all deal 3 info in here'), 
     ), 
    ), 
    array(
     'name' => 'adidas', 
     'deals' => array(
      array('logo' => 'images/addidas.png', 'description' => 'some addidas text'), 
      array('all deal 2 info in here'), 
      array('all deal 3 info in here'), 
     ), 
    ), 
); 

原因是關聯數組是地圖,但它看起來像是存儲品牌列表,而不是硬編碼您擁有的品牌數量。

我知道PHP可以讓你在關聯數組輕鬆地重複(事實上也是如此使用對象的JavaScript),但我認爲這是不好的做法...

編輯:添加PHP解決方案(只顯示)

<?php foreach ($brands as $brand): ?> 
<a href="<?php echo $brand['url'] ?>" title="<?php echo $brand['description'] ?>"><img src="<?php echo $brand['logo'] ?>" alt="<?php echo $brand['description'] ?>" /></a> 
<?php endforeach ?> 

編輯:我讀了所有該JavaScript的東西,我想您需要的時候......下面忽略,如果你不需要轉換爲JavaScript

,則上述陣列,你可以把它放到你的JavaScript所提到的其他答案:

var brands = <?php json_encode($brands) ?>; 

凡品牌將是:

[ 
    { 
     "name": "nike", 
     "deals": [ 
      { 
       // All deal 1 info here 
      }, 
      { 
       // All deal 2 info here 
      }, 
      { 
       // All deal 3 info here 
      }, 
     ] 
    }, 
    { 
     "name": "puma", 
     "deals": [ 
      { 
       // All deal 1 info here 
      }, 
      { 
       // All deal 2 info here 
      }, 
      { 
       // All deal 3 info here 
      }, 
     ] 
    }, 
    { 
     "name": "adidas", 
     "deals": [ 
      { 
       "logo": "images/adidas.png", 
       "description": "some adidas text" 
      }, 
      { 
       // All deal 2 info here 
      }, 
      { 
       // All deal 3 info here 
      }, 
     ] 
    }, 
] 
+0

非常好的你花時間審查我的問題。 – Volterony

相關問題