Php 函数检查用户文本是否有效
我正在尝试创建一个函数,这样,如果用户单击更新按钮,文本框中的文本是有效文本(只有数组中的文本应该是有效的,即text1、text2、text3)。然后,它echo是数组中与文本关联的数字,因此如果输入text1,它应该echo 10。我创建了一个函数来执行此操作,但它表示在foreach循环行上为foreach()提供的参数无效 HTML:Php 函数检查用户文本是否有效,php,Php,我正在尝试创建一个函数,这样,如果用户单击更新按钮,文本框中的文本是有效文本(只有数组中的文本应该是有效的,即text1、text2、text3)。然后,它echo是数组中与文本关联的数字,因此如果输入text1,它应该echo 10。我创建了一个函数来执行此操作,但它表示在foreach循环行上为foreach()提供的参数无效 HTML: <input type='text' id='usertext' name='usertext' size='15' /> <input
<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
是另一种方法。因此我的函数是正确的,只需要翻转数组?除此之外,非常感谢!还要注意的是,数组搜索比数组键搜索慢