更改数组键中的值,该值在php中具有特定的子键值

时间:2017-07-28 10:38:35

标签: php arrays

更改数组键中具有特定值的多个值的最短方法是什么?

例如,我有这个数组:

array(2) {
  [0]=>
  array(5) {
    ["state"]=>
    string(6) "active"
    ["payer_mail"]=>
    string(12) "mail@none.com"
    ["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) "mail@none.com"
    ["start"]=>
    string(9) "20/8/2014"
    ["end"]=>
    string(10) "20/10/2017"
    ["price"]=>
    string(5) "95.00"
    ["keystring"]=>
    string(8) "34879205"
  }
}

我想更改"state"子密钥"34879205"值的密钥的"keystring"值。

3 个答案:

答案 0 :(得分:2)

您可以使用foreach(): -

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

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

答案 1 :(得分:1)

您可以使用array_map函数

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

    return $element;
}, $array);

答案 2 :(得分:1)

我找到的另一种方式是:

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