Reputation: 43
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
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
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