用于检查用户文本是否有效的函数

时间:2014-06-03 00:28:31

标签: php

我正在尝试创建一个函数,以便用户单击“更新”按钮并且文本框中的文本是有效文本(只有数组中的文本应该有效,即.text1,text2,text3)。然后,它回显了与数组中的文本相关的数字,所以如果输入text1,它应该回显10.我做了一个函数来做它但是它说在foreach循环线上为foreach()提供的无效参数

HTML:

<input type='text' id='usertext' name='usertext' size='15' />
<input type='submit' name='update' id='update' value='Update' />

PHP:

public currenttext = 0;

$config['text'] = array(
    10 => 'text1',
    25 => 'text2',
    50 => 'text3'
);


public function set_text($validtext) {
    foreach($this->config['text'] as $key => $value) { // <-- foreach loop
        if($key == $validtext){
            $this->currenttext = $value;
        }
    }
}

if ($_POST['update') {
    $this->set_text($_POST['usertext'));
}

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

if ( isset($_POST['update']) ) {
    $this->set_text( $_POST['usertext'] );
}

同时翻转array;

$config['text'] = array(
    'text1' => 10,
    'text2' => 25,
    'text3' => 50
);

最后将set_text方法更改为以下内容:

// $validtext could be text1 or text2 or text3 from user
public function set_text($validtext) {
    if(array_key_exists($validtext, $this->config['text'])) {
        $this->currenttext = $this->config['text'][$validtext];
    }
}

将这些正确地整合到你的课堂中,它会起作用。另请查看PHP手册上的array_key_exists

答案 1 :(得分:1)

实际上,您不需要foreach循环,或者您也可以使用array_search()来获得相同的目标。考虑这个例子:

<?php

if(isset($_POST['update'])) {
    $usertext = $_POST['usertext'];
    $config['text'] = array(10 => 'text1', 25 => 'text2', 50 => 'text3');
    $key = array_search($usertext, $config['text']);
    if($key !== false) {
        echo $key;

    } else {
        // not found
    {
    exit;
}

?>

<form method="POST">
    <input type='text' id='usertext' name='usertext' size='15' /><br/>
    <input type='submit' name='update' id='update' value='Update' />
</form>