2012-08-26 88 views
0

我有这样的阵列称为$addon_array,当我用var_dump显示了这样每个数组元素进行运算

array(10) { 
    ["ext_token"]=> string(5) "floor" 
    ["ext_token_child"]=> string(6) "carpet" 
    ["concrete"]=> string(1) "4" 
    ["cement"]=> string(1) "3" 
    ["sand"]=> string(1) "2" 
    ["wood_4_2"]=> string(1) "4" 
    ["wood_8_2"]=> string(1) "2" 
    [0]=> string(0) "" 
    ["brick"]=> string(3) "100" 
    ["carpet"]=> string(1) "3" 
} 

我有什么蜜蜂尝试做了大半夜的尝试和推测的一种方式循环访问阵列中的所有不同元素(​​和ext_token_child除外),并通过称为$qty的另一个变量(可以是任何值,无所谓)乘以每个数字。

然后,我希望他们放在一个新的数组再次与它们对应的columnNamescementsand等...) 我认为这是仅仅指刚只是每个元素进行foreach循环的简单情况一起,但我可以似乎无法将它们放回到新阵列中。

感谢您的任何和所有帮助

+1

这与mysql或ajax有什么关系? –

回答

2
$new_array = array(); 
foreach($addon_array as $key => $col) { 
    if($key == 'ext_token' || $key == 'ext_token_child') { 
    $new_array[$key] = $col; 
    } else { 
    $new_array[$key] = $col * $qty; 
    } 
} 
+0

确定辉煌,看起来不错,我会做什么,但只是添加了他们的计算执行的元素添加到数组,所以例如ext_token和ext_toke_child,我不会添加到数组,所以我只是删除$ new_array [$ key] = $ col?此外,我只注意到我有一个空白的元素在我的数组没有变量,我怎么会不执行这个计算?谢谢 – Arken

+0

@Arken Yah,删除该行,然后颠倒if语句的含义,使其仅在有效值上运行。对于空白的,请检查空白:'$ col ==='''(注意三个等于 - 这是非常重要的)。或者使用'is_numeric($ col)'并自动检查它是否是一个数字 - 那么你甚至不需要检查'ext_token',因为它不是一个数字。 – Ariel

+0

好的briliant,我刚刚检查,它工作很好,谢谢你的帮助 – Arken

2

这应(使用array_walk)工作:

$new_array = array_walk($addon_array, function($v, $k) use ($qty) { 
    if(in_array($k, array('ext_token', 'ext_token_child'))) return $v; 
    return $v*$qty; 
}); 
+0

@Arken由于数组循环内部运行,此版本更好一些。但对于一个新手而言,它比我的理解更难。 – Ariel

1
$qty = 10; 
$newArray = array(); 
foreach($addon_array as $key => $val){ 
    if($key != 'ext_token' && $key != 'ext_token_child'){ 
     $newArray[$key] = $qty*(int)$val; 
    } 
} 

$newArray['ext_token'] = $addon_array['ext_token']; 
$newArray['ext_token_child'] = $addon_array['ext_token_child']; 

var_dump($newArray); 
0

骑自行车通过PHP数组是相当简单的,使用的foreach。

$new = array(); 
foreach($addon_array as $key=>$value){ 

    if($key != "ext_token" OR $key != "ext_token_child"){ 
      $value = $value*$qty; 
    } 
    $new[$key] = $value; 
} 
相关问题