albert7838
albert7838

Reputation: 19

Getting comma separated values from PHP array

I have an array thusly

$main_array = [

    ["image" => "james.jpg", "name" => "james", "tag" => "spacey, wavy"],
    ["image" => "ned.jpg", "name" => "ned", "tag" => "bright"]
    ["image" => "helen.jpg", "name" => "helen", "tag" => "wavy, bright"]

]

I use a foreach to echo some HTML based on the value of tag. Something like this

    foreach($main_array as $key => $array) {        
        if ($array['tag'] == "bright") { 
            echo '<p>'.$array['name'].' '.$array['image'].' '.$array['tag'].'</p>';
        }
    }

This only outputs "ned" as matching the tag "bright". But it should output "helen" too. Similarly:

    foreach($main_array as $key => $array) {        
        if ($array['tag'] == "wavy") { 
            echo '<p>'.$array['name'].' '.$array['image'].' '.$array['tag'].'</p>';
        }
    }

Should output "james" and "helen". What kind of function do I need to achieve the desired result?

Upvotes: 0

Views: 299

Answers (2)

Rahul Kumar Sharma
Rahul Kumar Sharma

Reputation: 44

You cant do it directly, because it return key with values in string. Below are the working code.

<?php
   $main_array = [

    ["image" => "james.jpg", "name" => "james", "tag" => "spacey, wavy"],
    ["image" => "ned.jpg", "name" => "ned", "tag" => "bright"],
    ["image" => "helen.jpg", "name" => "helen", "tag" => "wavy, bright"]

];

foreach($main_array as $key => $array) { 
    $str_arr = explode (", ", $array['tag']);
    foreach ($str_arr as $key2 => $array2) {
        if ($array2 == "wavy") { 
            echo '<p>'.$array['name'].' '.$array['image'].' '.$array['tag'].'</p>';
        }
    }
}
?>

Upvotes: -1

Nigel Ren
Nigel Ren

Reputation: 57121

When checking an item in a list of items, you can use explode() to split it into parts (I've used split by ", " as each item seems to have a space as well) and then use in_array() to check if it is in the list...

if (in_array("bright", explode( ", ", $array['tag']))) {

Upvotes: 2

Related Questions