1

I have an array. Here is the var_dump of that array.

array (size=2)
  0 => 
    object(stdClass)[266]
      public 'term_id' => string '4' (length=1)
      public 'name' => string 'Test' (length=4)
      public 'slug' => string 'test' (length=4)
      public 'term_group' => string '0' (length=1)
      public 'term_taxonomy_id' => string '4' (length=1)
      public 'taxonomy' => string 'filter' (length=6)
      public 'description' => string '' (length=0)
      public 'parent' => string '0' (length=1)
      public 'count' => string '0' (length=1)
  1 => 
    object(stdClass)[277]
      public 'term_id' => string '5' (length=1)
      public 'name' => string 'test2' (length=5)
      public 'slug' => string 'test2' (length=5)
      public 'term_group' => string '0' (length=1)
      public 'term_taxonomy_id' => string '5' (length=1)
      public 'taxonomy' => string 'filter' (length=6)
      public 'description' => string '' (length=0)
      public 'parent' => string '0' (length=1)
      public 'count' => string '0' (length=1)

Now I would like to convert that array like this.

$choices = array(
  array('label' => 'Test','value' => 'test'),
  array('label' => 'test2','value' => 'test2'),
)

Please note: I mapped keys like this in the choices array

  name key as label
  slug key as value

Can someone tell me how to achieve this?

Update:

This is what I tried so far.

foreach ( $filters as $filter ) { 
$filterarr[] = "array('label' => '". $filter->name ."' ,'value' => '". $filter->slug ."' )"; 
} 
$choices = array($filterarr);

But its not working as expected.

3
  • I didn't get your question. Actually I spent more than 1 hour in this. I couldn't get a proper solution. I tried using foreach loop like this. foreach ( $filters as $filter ) { $filterarr[] = "array('label' => '". $filter->name ."' ,'value' => '". $filter->slug ."' )"; } $filter_array = array($filterarr); But its not working properly. Thats why I posted this question. And no i'm not lazy Commented Mar 7, 2013 at 17:27
  • @Bigood See my above comment. Commented Mar 7, 2013 at 17:28
  • @Giri Add this on your original post! That's why meouw thought you didn't try something before Commented Mar 7, 2013 at 17:29

4 Answers 4

1

Try that

$choices = array();    
$tempArray = array();

for($i=0; $i < count(YOUR_ARRAY); $i++)
{
    $tempArray["label"] = array[$i]->name;
    $tempArray["value"] = array[$i]->slug;

    array_push($choices, $tempArray);
}
Sign up to request clarification or add additional context in comments.

Comments

1

Simply typecast your object. And perform the operation you wish as below.

$posts = (array) $yourObject;
$choices = array();
foreach($posts as $post){
   $choices[]['label'] = $post['name'];
   $choices[]['value'] = $post['slug'];
}

2 Comments

Fatal error: Cannot use object of type stdClass as array :(
@Giri Try the function mention here to convert your obj to array. if-not-true-then-false.com/2009/…
0

You can write something like that, but try to find it by yourself next time it's quite simple.

foreach($your_array as $a)
{
    $choices[] = array('label' => $a['label'],
                       'value' => $a['slug']);
}

Comments

0

Try;

foreach($array as $object){
   $choices[] = array("label" => $object->name, "value" => $object->slug);
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.