简单函数不会 return 基于变量的数组值

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),但没有任何反应。我不是新手,但我看不出这段代码有什么错误。我做错了什么?

您正在寻找值,而您应该寻找键:

if(in_array($data_clean_type,array_keys($data_clean_filter)))

如前所述,您应该使用 isset

您可以使用isset()

if(isset($data_clean_filter[$data_clean_type])) {

您也可以使用 array_key_exists()

if(array_key_exists($data_clean_type, $data_clean_filter)){

感谢您的提示,现在可以使用了。问题是 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];
    }
?>