2015-10-21 65 views
-1

你好,我有一個非常奇怪的問題,我有一些數組內的數組,他們在數據庫中,他們是「產品屬性」,所以基本上產品可以有無限的屬性。php數組內部調用某些值並在這些數組內調用某些值

我的問題是這樣的:

因此,當我去打印出來,這樣

<?php print_r($attr['values'][0]) ?> 

我得到這個

Array ([attribute_value_id] => 13 [name] => Country) 

Array ([attribute_value_id] => 15 [name] => Town) 

我該如何調用這兩個陣列分別爲[attribute_value_id] => 13[attribute_value_id] => 15我想分別稱它們爲13和15個值?

這甚至可能嗎?

更新:

<?php if ($attr['attribute_type'] == MsAttribute::TYPE_SELECT) { ?> 
     <select id="firstSelect" name="product_attributes[<?php echo $attr['attribute_id']; ?>]"> 
     <option value="0"><?php echo $text_select; ?></option> 
     <option value="<?php echo $attr['values'][0]['attribute_value_id'] ?>" <?php if (isset($normal_attribute_values[$attr['attribute_id']]) && array_key_exists($attr['values'][0]['attribute_value_id'], $normal_attribute_values[$attr['attribute_id']])) { ?>selected="selected"<?php } ?>><?php echo $attr['values'][0]['name']; ?></option> 
     </select> 
    <?php } ?> 

這是我的模板文件

+0

什麼是**精確的**輸出:'print_r($ attr ['values'] [0])'? – Rizier123

+0

@ Rizier123這是它的確切輸出,這兩行 – Innervisions

+0

這不能是真正的輸出,要麼你的代碼在一個循環中,要麼這兩個數組在另一個數組內('Array(...)') ) – Rizier123

回答

0

使用簡單foreach()函數內部的代碼顯示在下面的例子

foreach($attr['values'][0] as $value) 
{ 
    echo $value['attribute_value_id']."<br/>" ; 
    echo $value['name']; 
} 
+0

我不明白這將如何幫助我?當我需要這些2中的一個不是每一個1我只需要第一個沒有得到第二個 – Innervisions

+0

@Innervisions只需訪問第一個數組:'print_r($ attr ['values'] [0] [0]);'?! – Rizier123

+0

@Innervisions,這更簡單,正如Rizier –

0

如果你的輸出是準確的,你有什麼是這樣的:

Array('values' => Array(
    0 => Array ([attribute_value_id] => 13 [name] => Country), 
    1 => Array ([attribute_value_id] => 15 [name] => Town) 
    ) 
) 

知道了這一點,你可以做到以下幾點:

echo $attr['values'][0]['attribute_value_id']; // will echo 13 
echo $attr['values'][0]['name']; // will echo Country 
echo $attr['values'][1]['attribute_value_id']; // will echo 15 
echo $attr['values'][1]['name']; // will echo Town 

但是,如果你只知道你想要的鎮名稱的屬性ID,那麼你就必須這樣做:

foreach($attr['values'] as $data) 
    { 
     if($data['name'] == 'Town') 
     { 
      echo $data['attribute_value_d']; 
     } 
     // If not, do nothing. 
    } 

如果您對陣列有控制權,可考慮使用關聯陣列,而不是枚舉:

Array('values' => Array(
    'Country' => Array ([attribute_value_id] => 13 [name] => Country), 
    'Town' => Array ([attribute_value_id] => 15 [name] => Town) 
    ) 
) 

,那麼你可以:

echo $attr['values']['Country']['attribute_value_id']; // will echo 13 
echo $attr['values']['Country']['name']; // will echo Country 
echo $attr['values']['Town']['attribute_value_id']; // will echo 15 
echo $attr['values']['Town']['name']; // will echo Town 

枚舉VS關聯數組真的取決於你的業務邏輯,哪個最適合你。