Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查是否已设置所有数组元素_Php_Arrays - Fatal编程技术网

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提供的方法更适合一般情况。