2012-08-26 57 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; 
} 
相關問題