简单函数获胜';t返回基于变量的数组值


Simple function won't return array value based on variable

简短的问题。下面的代码正是我想要的。但是,由于某些原因,它不起作用。没有显示任何错误(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];
    }
?>