2017-07-28 35 views
3

更改數組鍵中具有特定值的多個值的最短途徑是什麼?更改具有特定子鍵值的數組鍵中的值php

例如,我有這樣的數組:

array(2) { 
    [0]=> 
    array(5) { 
    ["state"]=> 
    string(6) "active" 
    ["payer_mail"]=> 
    string(12) "[email protected]" 
    ["start"]=> 
    string(12) "06/05/2015" 
    ["end"]=> 
    string(8) "08/07/2017" 
    ["price"]=> 
    string(8) "45.00" 
    ["keystring"]=> 
    string(8) "493457025" 
    } 
    [1]=> 
    array(6) { 
    ["place"]=> 
    string(2) "47" 
    ["state"]=> 
    string(8) "canceled" 
    ["payer_mail"]=> 
    string(12) "[email protected]" 
    ["start"]=> 
    string(9) "20/8/2014" 
    ["end"]=> 
    string(10) "20/10/2017" 
    ["price"]=> 
    string(5) "95.00" 
    ["keystring"]=> 
    string(8) "34879205" 
    } 
} 

而且我想改變這種狀況對他"keystring"子鍵"34879205"價值的關鍵"state"值。

+0

使用'脫穎而出ach()' –

回答

1

另一種方法,我發現是:

$key = array_search('34879205', array_column($array, 'keystring')); 
$array[$key]['state'] = 'newvalue'; 
2

您可以使用foreach(): -

foreach($array as &$value) { 
    if ($value['keystring'] == '34879205'){ 
     $value['state'] = "";//change value here 
    } 
} 

輸出: - https://eval.in/838789

+0

謝謝。但我想我找到了一點「PHP風格」的答案。你怎麼看? – mondi

+0

@mondi是的,解決方案是好的,更短 –

1

可以使用array_map功能

$result = array_map(function ($element) { 
    if ($element['keystring'] === '34879205') { 
     $element['state'] = 'new_state'; 
    } 

    return $element; 
}, $array); 
+0

'array_map()'主要用於當你想在每個數組元素上應用一些自定義邏輯(函數)。所以對於這樣的問題,這是一個負擔。但答案是正確的,沒有問題。 –

+0

謝謝!但我認爲其他解決方案更優雅。 – mondi