为什么我的foreach循环停止了?

时间:2018-05-19 14:44:00

标签: php foreach

我创建了一个改编自forum post的foreach循环。

但它在第一次迭代后总是停止。

为什么会这样?

应该检查$ field是否与$ skip数组中的任何内容不匹配,然后运行一些代码。但代码只在第一个循环上运行然后退出。

function bg_calculation_save ( $pieces ) {

    $skip = array('company_name', 'logo', 'screenshot', 'highlight_1', 'highlight_2', 'highlight_3', 'awards');

    foreach ($pieces[ 'fields' ] as $field => $value) {

        if (!in_array($field, $skip)) {

            // Calculate the points
            $points = bg_calculate_points($field) * bg_score_weights($field);   

            // Set the value of the "$field_points" field
            $pieces[ 'fields' ][ $field . '_points' ][ 'value' ] = $points;

            //If the field isn't being saved right now, add it to the list to be saved
            if (!in_array( $pieces[ 'fields_active' ])) {
                $pieces[ 'fields_active' ][] = $field;
            }
            return $pieces;
        }
    }
}
add_filter( 'pods_api_pre_save_pod_item_vpn', 'bg_calculation_save' );

2 个答案:

答案 0 :(得分:1)

return $pieces;移到foreach循环之外。

答案 1 :(得分:0)

如果你要执行命令,如果找到$ field,我认为你的情况应该是

if (in_array($field, $skip))

根据您的情况

if (!in_array($field, $skip))

如果在第一个循环中它不在数组中,则条件为真,它执行语句并返回。因此,循环只执行一次。

如果您要遍历所有$ field,如果它不是in_array,则应删除return语句。