0

Here is a sample of the multidimensional array being outputted.

Array
(
    [0] => stdClass Object
        (
            [term_id] => 34
            [name] => ACS Consultants
            [slug] => acs-consultants
            [term_group] => 0
            [term_taxonomy_id] => 34
            [taxonomy] => ad_cat
            [description] => 
            [parent] => 0
            [count] => 0
            [cat_ID] => 34
            [category_count] => 0
            [category_description] => 
            [cat_name] => ACS Consultants
            [category_nicename] => acs-consultants
            [category_parent] => 0
        )

    [1] => stdClass Object
        (
            [term_id] => 18
            [name] => Business Development
            [slug] => business-development
            [term_group] => 0
            [term_taxonomy_id] => 18
            [taxonomy] => ad_cat
            [description] => 
            [parent] => 0
            [count] => 0
            [cat_ID] => 18
            [category_count] => 0
            [category_description] => 
            [cat_name] => Business Development
            [category_nicename] => business-development
            [category_parent] => 0
        )

    [2] => stdClass Object
        (
            [term_id] => 12
            [name] => Cash In Transit
            [slug] => cash-in-transit
            [term_group] => 0
            [term_taxonomy_id] => 12
            [taxonomy] => ad_cat
            [description] => 
            [parent] => 0
            [count] => 0
            [cat_ID] => 12
            [category_count] => 0
            [category_description] => 
            [cat_name] => Cash In Transit
            [category_nicename] => cash-in-transit
            [category_parent] => 0
        )
)

What i'm trying to do is take name and cat_ID and put into a new array like this

$newarray['ACS Consultants']=34;
$newarray['Business Development']=18;
$newarray['Cash In Transit']=12;

Here is my attempt but didn't work

$categories = get_categories( $args );

$newarray = array();


foreach($categories as $array) {
    foreach($array as $key=>$value) {
        if($key=="name") {
        $term = $key;
        $newarray[$term]="";
        }

        if($key=="cat_ID") {
        $newarray[$term]=$value;
        }
    }
}

How do i accomplish this?

2 Answers 2

2

It just an array of objects, you only need one loop. and you access the objects with ->

foreach ($categories as $category) {
    $newArray[$category->name] = $category->cat_ID;
}
Sign up to request clarification or add additional context in comments.

Comments

0

No need for a second foreach loop, this should do it

$newArray = array();

foreach($categories as $array)
{
  $newArray[$array['name']] = $array['cat_ID'];
}
var_dump($newArray);

outputs

array(3) {
  ["ACS Consultants"]=>string(2) "34"
  ["Business Development"]=>string(2) "18"
  ["Cash In Transit"]=>string(2) "12"
}

Although I did set $categories to an array of arrays for testing, so you may need to try the following if name and cat_ID are properties

$newArray = array();

foreach($categories as $array)
{
  $newArray[$array->name] = $array->cat_ID;
}
var_dump($newArray);

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.