如果有更好的方法来检查这些数组键

时间:2017-04-28 00:04:26

标签: php arrays multidimensional-array

我希望看到有更好的方法来检查这些数组键是否存在。我正在使用基本的if语句

$rules = array( 
    'extensions' => ['png', 'gif', 'jpg', 'jpeg'],
    'mimes' => ['image/png', 'image/gif', 'image/jpeg', 
    ]);

if (in_array($mime_type, $rules['mimes']))
      {
        echo "<br>Valid Image!<br>>";
      }
else
      {
        echo "<br>Ivalid Image!<br>>";
        }   

if (in_array($file_type, $rules['extensions']))
      {
    echo "<br>Valid Extension<br>";
      }
else
      {
    echo "<br>Ivalid Extension<br>";
  }

2 个答案:

答案 0 :(得分:2)

你的代码对我来说似乎很好,但为了节省一些内容,你可以使用array_walk_recursive(),即:

$result = [];
array_walk_recursive($rules, function ($item) use (&$result, $file_type, $mime_type)
{
    if (preg_match("@$mime_type|$file_type@i", $item))
    {
        $result[] =  $item;
    }
}
);
if (count($result) > 1) {
    print "both values";
   }

答案 1 :(得分:1)

您在检查键/值吗? 在您的问题标题中,它表示键,但您正在上面的代码中搜索值。 要获得价值,如果它是一个简单的一维数组in_array将有所帮助。 要获取密钥,您可以使用array_key_exists进行检查。 如果它是一个多维数组,请尝试这样:https://stackoverflow.com/a/19421079/6863825您可以修改逻辑以获得同一函数中的key / val。 如果有帮助,请告诉我。