Php 检查是否已设置所有数组元素
我有以下数组:Php 检查是否已设置所有数组元素,php,arrays,Php,Arrays,我有以下数组: $my_array = array ( 'city' => $this->input->post('city'), 'country' => $this->input->post('country'), 'state' => $this->input->post('state'),
$my_array = array (
'city' => $this->input->post('city'),
'country' => $this->input->post('country'),
'state' => $this->input->post('state'),
'miles' => $this->input->post('miles')
);
我可以使用哪个shortphp函数或方法检查是否设置了所有数组项?现在我正在使用以下代码
$my_array = array_filter($my_array);
if (!empty($my_array['city']) && !empty($my_array[['miles']) && !empty($my_array[['state']) && !empty($my_array['country']))
{
//do something
}
注意:我正在使用
array\u filter()
函数从查询中删除所有等于FALSE的条目。通常,您可以执行以下操作:
$required = array_flip(array('city', 'country', 'state', 'miles'));
if (array_diff_key($required, $my_array)) {
// not all keys are set
}
不过,在这种特定情况下,对结果数组进行计数就足够了。通常,您可以这样做:
$required = array_flip(array('city', 'country', 'state', 'miles'));
if (array_diff_key($required, $my_array)) {
// not all keys are set
}
但在这种特定情况下,对结果数组进行计数就足够了。似乎您可以对过滤后剩余的元素数进行计数:
if(count($my_array) == 4){
// all 4 still set
}
似乎您可以对过滤后剩余的元素数进行计数:
if(count($my_array) == 4){
// all 4 still set
}
那样的话?在这种情况下,我只需测试
计数(数组值($my\u数组))==4
?我只需测试计数(数组值($my_数组))==4试试这个:
function testArray($array) {
for($x = 0,$len = count($array); $x < $len; $x++) {
if(empty($array[$x])) {
return false;
}
}
return true;
}
试试这个:
function testArray($array) {
for($x = 0,$len = count($array); $x < $len; $x++) {
if(empty($array[$x])) {
return false;
}
}
return true;
}
您现在的代码是多余的,因为
empty()
,而array\u filter()
的默认行为实际上是相同的。详细说明项目设置。@Jason McCreary,谢谢您提供的信息!我尝试只使用if$my_array
但始终至少会有一个元素集。您的代码现在是多余的,因为empty()
,而array_filter()
的默认行为实际上是相同的。详细说明项目设置。@Jason McCreary,谢谢您提供的信息!我试着只使用if$my_数组
,但始终至少会有一个元素集。谢谢,但目标是比我的函数短。谢谢,但目标是比我的函数短。谢谢<代码>计数(数组值)似乎很精确,但如果没有键,值是否存在?我只是想决定是计算整个数组还是只计算值。@不,所有值都必须有一个键,所有键都必须有值(即使是null
),谢谢<代码>计数(数组值)似乎很精确,但如果没有键,值是否存在?我只是想决定是计算整个数组还是只计算值。@不,所有值都必须有一个键,所有键都必须有值(即使它是null
)。这是一个非常好的答案,但取决于上下文,它可能无法正常工作,因为count()返回数组中的元素数,我可以得到一个正好有四个元素但键不同的数组。因此@deceze提供的方法更适合于一般情况。这是一个非常好的答案,但取决于上下文,它可能无法正常工作,因为count()返回数组中的元素数,我可能有一个正好有四个元素但键不同的数组。因此,@deceze提供的方法更适合一般情况。