首页 > 解决方案 > 如何检查子数组中的值?

问题描述

我正在尝试检查“$query_string_params_and_values_white_list”数组中是否存在以下 2 个 var 值。

//Values to check:
$table = 'users';
$column = 'kites';

//Array:
$query_string_params_and_values_white_list = array('table'=>array('users','members'),array('column'=>array('keyword','phrase')));

在我的测试中,我得到了回应......

'不存在' '不存在'

由于数组中确实存在第一个 var 值,因此我的结果回显应该是:

'存在' '不存在'

但由于我得到了不想要的结果,这意味着我的代码有问题。

这是我的代码...

$query_string_params_and_values_white_list = array('table'=>array('users','members'),array('column'=>array('keyword','phrase')));

$table = 'users';
$column = 'kites';

if(in_array("$table",$query_string_params_and_values_white_list))
{
    echo 'exists';
}
else
{
    echo 'no exists';
}

if(in_array("$column",$query_string_params_and_values_white_list))
{
    echo 'exists';
}
else
{
    echo 'no exists';
}

我哪里做错了 ?我正在检查数组而不是子数组。正确的 ?如果是这样,那么如何检查子数组?

你能告诉我我应该如何编码吗?

谢谢!

标签: phphtml

解决方案


您可以使用几种不同的方法来列出子数组,但首先 - 数组定义:

$query_string_params_and_values_white_list = array(
  'table'=>array('users','members'),
  array(
    'column'=>array('keyword','phrase')
  )
);

如果它是正确的并且你真的想要那种数组,那么使用类似的东西:

$table = 'users';
$column = 'kites';


foreach ($query_string_params_and_values_white_list as $subarray){
    if(in_array($table,$subarray))
    {
        echo "exists\n";
    }
    else
    {
        echo "no exists\n";
    }
}

foreach ($query_string_params_and_values_white_list as $subarray){ //listing 1st level
    foreach ($subarray as $subsubarray){ //listing 2nd level
        if(in_array($column,$subsubarray))
        {
            echo "exists\n";
        }
        else
        {
            echo "no exists\n";
        }
    }
}

foreach检查数组的每个元素,通过使用它两次,您可以获得第三维($query...arrary -> unnamedarray -> 'column'array)的元素。PHP对此给出了一些警告,所以我假设您的意思是:

$query_string_params_and_values_white_list = array(
    'table'=>array('users','members'),
    'column'=>array('keyword','phrase')
);

然后搜索变得更容易一些:

$table = 'users';
$column = 'kites';

foreach ($query_string_params_and_values_white_list as $subarray){
    if(in_array($table,$subarray))
    {
        echo "exists\n";
    }
    else
    {
        echo "no exists\n";
    }
}

foreach ($query_string_params_and_values_white_list as $subarray){
    if(in_array($column,$subarray))
    {
        echo "exists\n";
    }
    else
    {
        echo "no exists\n";
    }
}

PS 不怕分解数组结构 - PHP 允许这样做,它让您对您尝试做的事情更有信心。


推荐阅读