快速和简短的问题。下面的代码就是我想要的方式。但是,出于某种原因,它不起作用。没有显示错误(error_reporting为-1)并且没有任何反应。
<?php
$data_clean_type = 'numeric';
$data_clean_filter = array('alpha' => '/^[a-zA-Z]*$/', 'numeric' => '/^[0-9]*$/', 'alphanumeric' => '/^[a-zA-Z0-9]*$/');
if(in_array($data_clean_type, $data_clean_filter)) {
echo $data_clean_filter[$data_clean_type];
}
?>
我期待看到$ data_clean_filter ['numeric']的内容(reg exp为数字),但没有任何反应。我不是新手,但我在这段代码中看不到任何错误。我做错了什么?
答案 0 :(得分:4)
您可以使用isset()
if(isset($data_clean_filter[$data_clean_type])) {
您也可以使用array_key_exists()
if(array_key_exists($data_clean_type, $data_clean_filter)){
答案 1 :(得分:1)
你正在寻找价值,而你应该寻找关键:
if(in_array($data_clean_type,array_keys($data_clean_filter)))
如上所述,您应该使用isset
。
答案 2 :(得分:-1)
感谢您的提示,它现在有效。问题是in_array检查数组的值,而不是键!
isset()是一种方法,对于这种特殊情况,我更喜欢array_key_exists()。
<?php
$data_clean_type = 'alpha';
$data_clean_filter = array('alpha' => '/^[a-zA-Z]*$/', 'numeric' => '/^[0-9]*$/', 'alphanumeric' => '/^[a-zA-Z0-9]*$/');
if(array_key_exists($data_clean_type, $data_clean_filter)) {
echo $data_clean_filter[$data_clean_type];
}
?>