通过以下内容,我将值推送到$countries = array();
array_push($countries,
array(
'state'=> $state,
'date'=> $jikuDate
)
);
然后我需要做一个检查,我正在做:
if (in_array($name, $countries['state'])) {
如果在多级关联数组中检查值?
答案 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);
}
。只需查看background,就可以在那里雄辩地说明。
答案 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