Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改在php中具有特定子键值的数组键中的值_Php_Arrays - Fatal编程技术网

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

更改在php中具有特定子键值的数组键中的值,php,arrays,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/0

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

例如,我有一个数组:

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"
  }
}
我想为他的
“keystring”
子键更改具有
“34879205”
值的键的
“state”
值。

您可以使用
foreach()
:-


输出:-

您可以使用数组映射功能

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

    return $element;
}, $array);

我发现的另一个方法是:

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

使用
foreach()。所以对于这类问题,这是一个负担。但答案是正确的,没有问题。谢谢!但我认为其他解决方案更优雅。谢谢。但我想我找到了一个更“php风格”的答案。你怎么认为?
$key = array_search('34879205', array_column($array, 'keystring'));
$array[$key]['state'] = 'newvalue';