首页 > 解决方案 > Laravel list() with each() function error with deprecated function

问题描述

我对如何替换 each() 函数感到有些困惑,因为它已被弃用,我知道这一点并修复了while( list() = each() )我项目中的一些错误案例。但是,对于这种情况,我应该使用什么其他选项:

foreach($new_id as $new_ids) {
    list($key,$valueAddress) = each($address);
    list($key,$valueCity) = each($city);
    list($key,$valueState) = each($state);
    if(isset($_POST['publicOnly'])) {
        list($key,$valuePublicOnly) = each($publicOnly);
    } else {
        $valuePublicOnly = 0;
    }

    $propertyAddress = PropertyAddressManagement::find($new_ids);
        $propertyAddress->address = $valueAddress;
        $propertyAddress->city = $valueCity;
        $propertyAddress->state = $valueState;
        $propertyAddress->publicOnly = $valuePublicOnly;
    $propertyAddress->save();
}

标签: phplaravel-4

解决方案


您没有使用键,因此只需获取当前值,然后移至下一个值:

foreach($new_id as $new_ids) {
    $propertyAddress = PropertyAddressManagement::find($new_ids);
        $propertyAddress->address = current($address);
        $propertyAddress->city = current($city);
        $propertyAddress->state = current($state);
        $propertyAddress->publicOnly = isset($_POST['publicOnly']) ? current($publicOnly) : 0;
    $propertyAddress->save();

    next($address); next($city); next($state); next($publicOnly);
}

但是,如果所有数组中的键都相同,那么我认为这应该有效:

foreach($new_id as $key => $new_ids) {
    $propertyAddress = PropertyAddressManagement::find($new_ids);
        $propertyAddress->address = $address[$key];
        $propertyAddress->city = $city[$key];
        $propertyAddress->state = $state[$key];
        $propertyAddress->publicOnly = isset($_POST['publicOnly']) ? $publicOnly[$key] : 0;
    $propertyAddress->save();
}

推荐阅读