JackB
JackB

Reputation: 43

php continue "foreach" after return

I am working on a WordPress plugin for a specific theme but have a general question,
I have an array and want to do something with each object and return the result.
everything is Ok but the "foreach" only works for the first object of array and I think its because of "return" but for some reasons I cannot use "echo" instead of return.
this is my code:

    $cast_list = array(
        "composite_cast",
        "graphic_designer_cast",
        "product_manager_cast",
        "render_cast",
        "the3d_cast",
        "story_board_cast"
    );

    foreach ($cast_list as $value)
    {
        $user_field = get_field($value);    
    }

    return $user_field;
} 

I have read other similar topics but passing the variable to another function to do the "return" job for me also not works

Upvotes: 1

Views: 1216

Answers (2)

A l w a y s S u n n y
A l w a y s S u n n y

Reputation: 38502

Your doubt: the "foreach" only works for the first object of array and I think its because of "return"

No this not for return it's because of variable overwriting inside the foreach() loop every time. Actually you're not returning only the first element, here you're returning the last element because you're overwriting $user_field variable every time within foreach() loop

Try instead to push result to it using $user_field[] and then you're good to go

$cast_list = array(
    "composite_cast",
    "graphic_designer_cast",
    "product_manager_cast",
    "render_cast",
    "the3d_cast",
    "story_board_cast"
);

foreach ($cast_list as $value)
{
    $user_field[] = get_field($value);    
}

return $user_field;

Upvotes: 1

Jack Ashton
Jack Ashton

Reputation: 85

All the functions work until the return keyword. You need to create a new array and append all the edited elements to it and then return it.

$user_fields = array();
foreach ($cast_list as $value)
{
    array_push($user_fields, get_field($value));
}
return $user_fields;

Or you even can work on each field right in the loop and return nothing.

Upvotes: 0

Related Questions