Php 检查给定数组是否具有数组或非数组或同时具有这两个值的最快方法是什么?
我们给出了一个可以处于4种状态的给定数组 数组具有以下值:Php 检查给定数组是否具有数组或非数组或同时具有这两个值的最快方法是什么?,php,arrays,Php,Arrays,我们给出了一个可以处于4种状态的给定数组 数组具有以下值: 仅阵列 仅限非数组 数组和非数组 数组没有值 考虑到数组键只能是数字或字符串值(而不是数组),我想您想知道数组值吗 如果是这样的话,你必须循环你的数组,测试每一个元素,如果它是数组或者不是数组,跟踪找到了什么——参见函数,关于这一点 然后,当您测试完所有元素后,您必须测试是否找到了数组和/或非数组 我想,像这样的事情可能会奏效: $has_array = false; $has_non_array = false; foreach
- 仅阵列
- 仅限非数组
- 数组和非数组
- 数组没有值
我想,像这样的事情可能会奏效:
$has_array = false;
$has_non_array = false;
foreach ($your_array as $element) {
if (is_array($element)) {
$has_array = true;
} else {
$has_non_array = true;
}
}
if ($has_array && $has_non_array) {
// both
} else {
if ($has_array) {
// only arrays
} else {
// only non-array
}
}
(未经测试,但想法应该存在)
这部分代码应该适用于您要求的前三点 要测试“array has no value”,最快的方法是在循环之前使用语言构造——并且只有在数组不为空时才执行循环,以避免任何错误
您还可以使用函数计算数组中的元素数,并测试它是否等于
0
,顺便说一句。考虑到数组键只能是数字或字符串值(而不是数组),我想您想知道数组值吗
如果是这样的话,你必须循环你的数组,测试每一个元素,如果它是数组或者不是数组,跟踪找到了什么——参见函数,关于这一点
然后,当您测试完所有元素后,您必须测试是否找到了数组和/或非数组
我想,像这样的事情可能会奏效:
$has_array = false;
$has_non_array = false;
foreach ($your_array as $element) {
if (is_array($element)) {
$has_array = true;
} else {
$has_non_array = true;
}
}
if ($has_array && $has_non_array) {
// both
} else {
if ($has_array) {
// only arrays
} else {
// only non-array
}
}
(未经测试,但想法应该存在)
这部分代码应该适用于您要求的前三点 要测试“array has no value”,最快的方法是在循环之前使用语言构造——并且只有在数组不为空时才执行循环,以避免任何错误 您还可以使用函数计算数组中的元素数,并测试它是否等于
0
,顺便说一句。一些预先计算:
function isArray($reducedValue, $currentValue) {
// boolean value is converted to 0 or 1
return $reducedValue + is_array($currentValue);
}
$number_of_arrays = array_reduce($array, 'isArray', 0);
然后,可以按如下方式评估不同的状态:
count($array) == $number_of_arrays
$number_of_arrays == 0
count($array) != $number_of_arrays
empty($array);
function isArray($reducedValue, $currentValue) {
// boolean value is converted to 0 or 1
return $reducedValue + is_array($currentValue);
}
$number_of_arrays = array_reduce($array, 'isArray', 0);
然后,可以按如下方式评估不同的状态:
count($array) == $number_of_arrays
$number_of_arrays == 0
count($array) != $number_of_arrays
empty($array);
引用:,键不能是数组:键可以是整数或字符串()。你是指数值吗?请添加一个示例数组来解释你的意思。是的,你是对的,我指的是数值。你需要在两个州之间确定吗?或者如果满足任何或所有四种状态,只需要一个true?我需要确定,即1、2、3、4种状态。键不能是数组:键可以是整数或字符串()。你是指数值吗?请添加一个示例数组来解释你的意思。是的,你是对的,我指的是数值。你需要在两个州之间确定吗?或者如果四种状态中的任何一种或全部都满足,就需要一个true?我需要确定,那就是1,2,3,4种状态。