【问题标题】:For each loop: changing values of a nested array对于每个循环:更改嵌套数组的值
【发布时间】:2013-07-24 21:08:15
【问题描述】:

我在更改嵌套数组的值时遇到了困难。我正在尝试将每个嵌套数组的 'admin' => '1'value 更改为 '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;
        }
    }

【问题讨论】:

    标签: php arrays foreach


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您忘记在 foreach 语句中为 $value 传递 'admin' 键

      使用

            $value['admin']
      

      【讨论】:

        【解决方案3】:

        您正在检查管理员的类型两次 (==)。你需要=的赋值语句。 您还需要访问要循环的数组的 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.
                }
            }
        

        【讨论】:

          猜你喜欢
          • 2022-01-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-01
          • 2021-12-09
          相关资源
          最近更新 更多