简单函数不会根据变量返回数组值

时间:2015-02-26 20:17:22

标签: php arrays associative-array

快速和简短的问题。下面的代码就是我想要的方式。但是,出于某种原因,它不起作用。没有显示错误(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为数字),但没有任何反应。我不是新手,但我在这段代码中看不到任何错误。我做错了什么?

3 个答案:

答案 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];
    }
?>