foreach从json回显到2个不同的输入

时间:2018-10-02 11:35:44

标签: php conditional-statements

我想坚持的是这一点:

对于每个不包含“ + price”的名称,将值回显到输入类=“ optionname”中 对于每个包含“ + price”的名称,将值echo放入unput class =“ optionprix”

我的php和html:

foreach($fields as $field):

<input type="text" class="optionname" name="<?php echo $field['name']; ?>" value="<?php echo $field['value']; ?>"/>

Prix : <input type="text" class="optionprix" name="<?php echo $field['name'].'+price'; ?>" value="<?php echo $optionprix; ?>"

endforeach;

我的记录$ fields为JSON格式=>

 array(8) {
    [0] => array(2) {
        ["name"] => string(26) "checkboxes-label---3499163"  
        ["value"] => string(7) "Options"
    }
    [1] => array(2) {
        ["name"] => string(25) "single-checkbox---3499163"  
        ["value"] => string(34) "Aide à l installation du parcours"
    }
    [2] => array(2) {
        ["name"] => string(31) "single-checkbox---3499163+price"  
        ["value"] => string(3) "500"
    }
    [3] => array(2) {
        ["name"] => string(25) "single-checkbox---3499163"  
        ["value"] => string(27) "Location du système vidéo"
    }
    [4] => array(2) {
        ["name"] => string(31) "single-checkbox---3499163+price"  
        ["value"] => string(2) "10"
    }
    [5] => array(2) {
        ["name"] => string(25) "single-checkbox---3499163"  
        ["value"] => string(4) "test"
    }
    [6] => array(2) {
        ["name"] => string(31) "single-checkbox---3499163+price" 
        ["value"] => string(2) "13"
    }
    [7] => array(2) {
        ["name"] => string(18) "required---3499163"  
        ["value"] => bool(false)
    }
}

这样,当我转储echo var_dump($ field)=>

array(2) {
    ["name"] => string(25) "single-checkbox---3499163" 
    ["value"] => string(34) "Aide à l installation du parcours"
}

array(2) {
    ["name"] => string(31) "single-checkbox---3499163+price" 
    ["value"] => string(3) "500"
}

我不确定完成此操作的最佳方法,我使用count,in_array和explode方法进行搜索,但未成功

3 个答案:

答案 0 :(得分:1)

最准确的是没有正则表达式,您只需要检查条件块中的最后6个字符是否匹配。

foreach ($fields as $field) {
    if (substr($field['name'], -6) !== "+price") {
        echo "<input type=\"text\" class=\"optionname\" name=\"{$field['name']}\" value=\"{$field['value']}\"/>";
    } else {
        echo "Prix : <input type=\"text\" class=\"optionprix\" name=\"{$field['name']}+price\" value=\"$optionprix\">";
    }
}

答案 1 :(得分:0)

这仅检查名称是否以'price'结尾

if(preg_match('/price$/', $field['name'])) {
    //Prix input
} else{
    //normal input
}

答案 2 :(得分:0)

您可以通过使用strpos()来非常简单地执行以下操作

<?php
foreach($fields as $field):
    if ( strpos($field['name'], '+price') === FALSE ) :
?>
        <input type="text" class="optionname" name="<?php echo $field['name']; ?>" value="<?php echo $field['value']; ?>"/>

<?php
    else:
?>
        Prix : <input type="text" class="optionprix" name="<?php echo $field['name'].'+price'; ?>" value="<?php echo $optionprix; ?>"

<?php
    endif;
endforeach;
?>