1

所以我有一个动态生成的数组,如下所示:

$array[1] = array(
    'item1' => 'value1',
    'item2' => 'value2',
    'item3' => 'value3',
    'item4' => 'value4',
    'item5' => 'value5'
);

$array[2] = array(
    'item1' => 'value100',
    'item2' => 'value200',
    'item3' => 'value300',
    'item4' => 'value400',
    'item5' => 'value500'
);

...

现在我有来自其他地方的 'item2' = 'value2' 的值

我试图找到一种方法,只需一行代码,即可访问数组中“item2”=“value2”的所有项目并修改“item4”的值

如果我知道我只需要为 array[1] 更改它,我可以轻松地做这样的事情:

$array[1]['item4'] = 'new value';

但我只需要为“item2”等于“value2”的项目更新值

我知道我可以循环思考它,但我试图找到一种只用一行代码的方法。jQuery 可以在匹配某个条件时轻松找到兄弟姐妹,也许我不知道 PHP 中有类似的东西?

4

2 回答 2

3

希望这可以帮助

$array[1] = array(
    'item1' => 'value1',
    'item2' => 'value2',
    'item3' => 'value3',
    'item4' => 'value4',
    'item5' => 'value5'
);

$array[2] = array(
    'item1' => 'value100',
    'item2' => 'value200',
    'item3' => 'value300',
    'item4' => 'value400',
    'item5' => 'value500'
);

function test(&$item, $key){
    if($item['item2'] == 'value2'){
        $item['item4'] = 'new value';
    }
}

array_walk($array, 'test');
于 2013-08-30T15:40:23.060 回答
2

它不是很漂亮,但在这里:

foreach($array as &$child) { if($child['item2'] == 'value2') { $child['item4'] = 'new value'; }}

我希望没有其他人需要阅读您的代码...

于 2013-08-30T15:37:24.513 回答