2015-10-21 44 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关联数组真的取决于你的业务逻辑,哪个最适合你。