14
foreach($categories as $category)
{
    print_r($category);
}

The code above gives me the following result.

stdClass Object
(
    [category_Id] => 4
    [category_Title] => cat 4
)
stdClass Object
(
    [category_Id] => 7
    [category_Title] => cat 7
)
stdClass Object
(
    [category_Id] => 6
    [category_Title] => cat 6
)

how can I use implode(', ' ) to get the following result:

cat 4, cat 7, cat 6

I used it, but I got an error

1
  • just create array of element with category_Title Commented Nov 30, 2013 at 6:48

3 Answers 3

28

You can cast the object as an array.

implode(',',(array) $categories); 

For more information: Convert a PHP object to an associative array

Sign up to request clarification or add additional context in comments.

2 Comments

it works for array but not for object as OP requested
You can indeed cast an object to array, but casting $categories and imploding the result does not make any sense. This answer is seemingly trying to concatenate the properties of a single object, as in implode(',', (array)$category), but that would produce '4,cat 4'.
25

Here's an alternative solution using array_map:

$str = implode(', ', array_map(function($c) {
    return $c->category_Title;
}, $categories));

2 Comments

@Magus you misunderstood the question. If you read carefully, $categories is already an array containing three stdClass elements which have two properties: category_Id and category_Title. He asked how to generate a new array of category titles (strings). Just casting $categories to an array wouldn't work.
@GuilhermeSehn indeed. I apologize.
7

Try like

foreach($categories as $category)
{
    $new_arr[] = $category->category_Title;
}
$res_arr = implode(',',$new_arr);
print_r($res_arr);

1 Comment

oky but to for loop array will make your app slowly little bit, imagine it if you have more than 5000 records

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.