如何检查值是否在关联数组中?

时间:2018-06-04 06:29:04

标签: php arrays

通过以下内容,我将值推送到$countries = array();

array_push($countries, 
    array(
        'state'=> $state,
        'date'=> $jikuDate
    )
);

然后我需要做一个检查,我正在做:

if (in_array($name, $countries['state'])) {

如果在多级关联数组中检查值?

2 个答案:

答案 0 :(得分:1)

您无法直接使用array_column,因为它只接受 flat 数组。只需使用state获取所有if (in_array($name, array_column($countries, 'state'))) { } 值,然后进行检查。

以下是这个想法:

$countries

基本上,如果你的Array ( [0] => Array ( [state] => Arizona [date] => 2018-01-01 ) [1] => Array ( [state] => California [date] => 2018-01-01 ) ) 是多级的,(意思是):

array_column

当您应用state时,您将摘取输出每个array_column($countries, 'state') ===> Array ( [0] => Arizona [1] => California ) 值,然后将它们收集到一个数组中。它将产生如下数组:

in_array

只有这样你才能使用 public interface AsynchronousService { void executeAsynchronously(Runnable task); } 。只需查看,就可以在那里雄辩地说明。

答案 1 :(得分:1)

我使用此代码。 has函数使用“点”表示法检查数组中是否存在给定项目。

我希望对你有用:

function exists($array, $key)
{
    if ($array instanceof ArrayAccess) {
        return $array->offsetExists($key);
    }

    return array_key_exists($key, $array);
} 


function accessible($value)
{
    return is_array($value) || $value instanceof ArrayAccess;
}

 function has($array, $keys)
{
    if (is_null($keys)) {
        return false;
}

$keys = (array) $keys;

if (! $array) {
    return false;
}

if ($keys === []) {
    return false;
}

foreach ($keys as $key) {
    $subKeyArray = $array;

    if (exists($array, $key)) {
        continue;
    }

    foreach (explode('.', $key) as $segment) {
        if (accessible($subKeyArray) && exists($subKeyArray, $segment)) {
            $subKeyArray = $subKeyArray[$segment];
        } else {
            return false;
        }
    }
}

return true;
}

例如:

$array = ['product' => ['name' => 'Desk', 'price' => 100]];
var_dump(has($array,'ali')); # return false
var_dump(has($array,'product')); # return true
var_dump(has($array,'product.name')); # retirm true