对于每个循环:更改嵌套数组的值

时间:2013-07-24 21:08:15

标签: php arrays foreach

我在更改嵌套数组的值时遇到了困难。我正在尝试将'admin' => '1'值更改为每个嵌套数组的'admin' => '0'。我尝试了一个foreach循环,但逻辑不正确。我怎么能纠正这个?还是有更好的方法?

阵列

'user' => array(
        // Regular user, admin
    array(
       'id' = '1'
       'admin' => '1',
       ),
    array(
        'id' = '2'
        'admin' => '1',
        ),
    array(
       'id' = '3'
       'admin' => '1',
       ),
    )

循环:

foreach ($users as $admin => $value) {
        if ($value == 1) {
            $value == 0;
        }
    }

3 个答案:

答案 0 :(得分:1)

如果要在源数组中编辑它,则需要通过引用传递值。

foreach ($users as $admin => &$value) {
    if ($value['admin'] == 1) {
        $value['admin'] = 0;
    }
}

答案 1 :(得分:0)

您正在检查管理员的类型两次(==)。您需要=的赋值语句。 您还需要访问要循环的阵列的admin键。

这应该更像是:

foreach ($users as $admin => $value) {
        if ($value['admin'] == 1) {
//                ^ Use ['key'] to access the value of that key 
            $value['admin'] = '0';
//                          ^ This assigns 0 to the value.
        }
    }

答案 2 :(得分:0)

您忘记在foreach语句<$ p>中传递$ admin的'admin'键

使用

      $value['admin']