简短的问题。下面的代码正是我想要的。但是,由于某些原因,它不起作用。没有显示任何错误(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表示numeric)的内容,但什么也没发生。我不是新手,但我看不出这段代码中有任何错误。我做错了什么?
您可以使用isset()
if(isset($data_clean_filter[$data_clean_type])) {
您也可以使用array_key_exists()
if(array_key_exists($data_clean_type, $data_clean_filter)){
您正在寻找值,而您应该寻找密钥:
if(in_array($data_clean_type,array_keys($data_clean_filter)))
如前所述,您应该使用isset
。
感谢您的提示,它现在可以工作了。问题是inarray检查的是数组的值,而不是键!
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];
}
?>