Hommer Smith
Hommer Smith

Reputation: 27852

Check if key exists in smarty array

I have an array that looks like this:

array(
    'name1' => array('city1', 'city2', 'city3'),
    'name2' => array('city1', 'city4'),
    'namen' => array('city1', 'city7', 'cityn')
);

Which is passed to smarty as : $my_names There is a loop in my Smarty template that looks like this:

{{foreach from=$names item=name}}
  {{foreach from=$cities item=city}}
  //Check if name1 exist and after check if the city is in the array for that name
  {{/foreach}}
{{/foreach}}

I fail to see how would I use the $name and $city to access the array $my_names

I have tried doing if($my_names.$name.$city), but it doesn't work.

Upvotes: 9

Views: 26839

Answers (2)

Brice Favre
Brice Favre

Reputation: 1527

This notation will work too :

{if 'needle'|array_key_exists:$haystack}
....
{/if}

Upvotes: 22

Daniël W. Crompton
Daniël W. Crompton

Reputation: 3518

You can use the array_key_exists() function to check whether the key is in the array.

{if array_key_exists('needle', $haystack)} 
    DoSomethingAboutIt 
{/if}

Upvotes: 16

Related Questions