【问题标题】:Php, Why won't in_array on first level of multi-dimensional arrays work?Php,为什么第一级多维数组的 in_array 不起作用?
【发布时间】:2021-04-06 22:24:28
【问题描述】:

假设我有一个这样的多维数组,

$details = array(
    'fruit' => array(
        'path' => '/tmp/fruit',
        'headers' => array(
            'size',
            'weight',
            'colour')),
    'car' => array(
        'path' => '/tmp/car',
        'headers' => array(
            'model',
            'fuel',
            'colour')),
    'animal' => array(
        'path' => '/tmp/animal',
        'headers' => array(
            'species',
            'sex',
            'locale'));

为什么这不起作用?假设网址是 example.url/web/page/fruit

$uriPath = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

$base = basename($uriPath);

if(in_array($base, $details)) {
    echo($details[$base]['path']);
}

有没有更好的办法?

【问题讨论】:

  • 在这种情况下$base 的值是多少?
  • 如果 url 是 example.url/web/page/fruit 那么它将是“fruit”。如果我回显 $base,我会得到水果。
  • 所以你应该改用array_key_exists()

标签: php arrays if-statement multidimensional-array


【解决方案1】:

in_array() 检查数组中是否存在所需的 value,而要检查给定的 key 是否存在于数组中,请改用array_key_exists()

if(array_key_exists($base, $details)) {
    echo($details[$base]['path']);
}

【讨论】:

    猜你喜欢
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    相关资源
    最近更新 更多