Как я могу в smarty получить значение специального имени массива? - PullRequest
0 голосов
/ 08 октября 2019

У меня есть массив PHP, как показано ниже:

$list = array(
    array(
        'name'=>'switch',
        'value'=>'cisco'
    ),
    array(
        'name'=>'switchport',
        'value'=>'2'
    )
);

Как я могу получить элемент name='switch' или name='switchport' за один шаг?

, потому что он находится в smarty template, есть img

<img src="http://localhost:8080/api.php?switch={$my_need_switch_value}&switchport={$my_need_switchport_value}">

Итак, как я могу получить my_need_switch_value из $list за один шаг?

Ответы [ 4 ]

1 голос
/ 08 октября 2019

Вы можете использовать {assign} для назначения новых переменных.

{foreach from=$list item=customfield}
    {if $customfield.name=='switch'}
        {assign var=switch value=$customfield.value}
    {elseif $customfield.name=='switchport'}
        {assign var=portname value=$customfield.value}
    {/if}

{/foreach}

, затем вы можете использовать $switch и $switchport направленно.

0 голосов
/ 08 октября 2019

Вы пробовали что-то вроде:

$list[0].name
$list[1].name

Я не верю, что есть один выстрел. Вы должны хотя бы выполнить итерацию массива и сравнить значение с тем, что вам нужно.

0 голосов
/ 08 октября 2019

Если я правильно понял, что вы хотите, вы можете создать функцию с массивом и именем, которое вы хотите найти в качестве параметров, а затем просмотреть его и получить его значение. Например:

$list = [
    [
        'name'=>'switch',
        'value'=>'cisco'
    ],
    [
        'name'=>'switchport',
        'value'=>'2'
    ]
];

function getValue($array, $name) {
    foreach($array as $key => $value) {
        if($value['name'] == $name) {
            echo $value['value'];
        }
    }
}

Если вы вызываете его, используя «switch» в качестве параметра имени, он будет отображать «cisco», а если вы измените его на «switchport», он отобразит «2». Затем вы можете использовать его в своей структуре следующим образом:

<img src="http://localhost:8080/api.php?switch={getValue($list,'switch')}&switchport={getValue($list,'switchport')}">

Это то, чего вы хотите достичь?

0 голосов
/ 08 октября 2019

Вы пробовали {$list.0} или {$list.0.name}? Если бы я понял, что вы хотите.

...