Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 函数检查用户文本是否有效_Php - Fatal编程技术网

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

Php 函数检查用户文本是否有效,php,Php,我正在尝试创建一个函数,这样,如果用户单击更新按钮,文本框中的文本是有效文本(只有数组中的文本应该是有效的,即text1、text2、text3)。然后,它echo是数组中与文本关联的数字,因此如果输入text1,它应该echo 10。我创建了一个函数来执行此操作,但它表示在foreach循环行上为foreach()提供的参数无效 HTML: <input type='text' id='usertext' name='usertext' size='15' /> <input

我正在尝试创建一个函数,这样,如果用户单击更新按钮,文本框中的文本是有效文本(只有数组中的文本应该是有效的,即text1、text2、text3)。然后,它echo是数组中与文本关联的数字,因此如果输入text1,它应该echo 10。我创建了一个函数来执行此操作,但它表示在foreach循环行上为foreach()提供的参数无效

HTML:

<input type='text' id='usertext' name='usertext' size='15' />
<input type='submit' name='update' id='update' value='Update' />
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'));
}

PHP:

<input type='text' id='usertext' name='usertext' size='15' />
<input type='submit' name='update' id='update' value='Update' />
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'));
}
public currenttext=0;
$config['text']=数组(
10=>“text1”,
25=>“text2”,
50=>“text3”
);
公用函数集\文本($validtext){
foreach($this->config['text']为$key=>$value){//currenttext=$value;
}
}
}
如果($\发布['update'){
$this->set_text($_POST['usertext');
}
您可以尝试以下方法:

if ( isset($_POST['update']) ) {
    $this->set_text( $_POST['usertext'] );
}
同时翻转
数组

$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<代码>手册。

< P>实际上,你不需要一个<代码>前缀循环,或者,也可以使用<代码> ARARYAXSECHER()/代码>来达到相同的目标。
<?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>



在我发布问题后,我立即意识到我必须翻转数组。我很高兴你正确理解了这个问题,因为这正是我想要的。在我标记这是正确答案之前,我进行了几次跟进。1)这是最好的方法吗?2)你能解释一下为什么你有$this->config['text'[$validtext];在彼此旁边?在很多方面都可以做到,但这是一种整洁的方式,
foreach
IMO
中使用
$this->config['text'][$validtext]有点贵
我已经访问了多维。你有什么方法可以为我提供一个foreach循环方法,只是为了学习?你在示例中使用的方法是另一种方法,但是你的数组需要翻转,正如我在回答中所做的那样,
array\u search
是另一种方法。因此我的函数是正确的,只需要翻转数组?除此之外,非常感谢!还要注意的是,数组搜索比数组键搜索慢