When you set the third parameter of get_post_meta
to true, the function returns a string, as you can read in the codex. So:
$arr = get_post_meta($post->ID, 'tab_details', true);
Makes $arr
be a string and a string is not a valid argument for a PHP foreach
loop and that is waht the error message says.
Instead, if you set the third parameter to false
or leave it blank, you will get an array with all values for the spècified meta_key (or an empty array if no values are found):
$arr = get_post_meta($post->ID, 'tab_details');
//Now $arr is an array
foreach($arr as $part){....}