3

I wrote a function to echo the value from each key name out of an array. Is there a nicer, shorter way to write following code?

foreach ($prod_cats as $k1 ){
    foreach ($k1 as $k2 => $value){
        if ($k2 == 'name'){
            echo $value;
        }
    }
}

Here is an example on how my array looks like:

Array
(
    [0] => stdClass Object
    (
        [term_id] => 11
        [name] => example1
        [slug] => example1
    )

    [1] => stdClass Object
    (
        [term_id] => 12
        [name] => example2
        [slug] => example2
    )

    [2] => stdClass Object
    (
        [term_id] => 13
        [name] => example3
        [slug] => example3
    )
)
5
  • array_map(function($v){ echo $v->name;}, $yourArray); Commented Jul 14, 2015 at 12:50
  • 1
    foreach ($prod_cats as $k1 ){echo $k1->name;} Commented Jul 14, 2015 at 12:50
  • @JohnConde Did you ate a semicolon in your code :)? Commented Jul 14, 2015 at 12:51
  • fantastic John Conde ! It works and is short :) Would you like to add your comment as an answer below? Commented Jul 14, 2015 at 12:58
  • Thanks to Rizier123 too! Commented Jul 14, 2015 at 12:58

2 Answers 2

4

if you know name keyword is fixed and available, you can avoid one more loop.

foreach ($prod_cats as $k1 ){
    echo $k1['name'];
}
Sign up to request clarification or add additional context in comments.

Comments

0

Use array_walk()

array_walk($input, function($obj){ echo $obj->name; });

This can be done with array_map(), but when you are not creating a new array out of your current array, array_walk() is suggested, because, it doesn't return anything, while array_map() returns an array conatining what is returned by function passed to it as a callback.

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.