2015-09-25 74 views
-2

我在php中有一个数组对象。检查数组对象中特定索引的所有值是否为空?

我想取消设置所有内部对象包含空值的所有索引。

例如:

$数据,如

Array (
[0] => Array (
      [address] => 123 
      [address1] => asddff 
      [address3] => 
      ) 
[1] => Array (
      [address] => 123 
      [address1] => 
      [address3] => 
      ) 
[2] => Array (
      [address] => 123 
      [address1] => asddff 
      [address3] => 
      ) 
[3] => Array (
      [address] => 123 
      [address1] => asddff 
      [address3] => 
     ) 
) 

例如: 所以,所以我希望把它未设置为所有对象地址3指数则为空数组对象。 address1对所有人都不为空,所以我需要它。只为所有人取消设置address3索引。 步骤:

  1. 想检查所有数据的索引是否为空。
  2. 取消设置所有这些索引。

所以结果应该是这样的:

Array (
[0] => Array (
      [address] => 123 
      [address1] => asddff 
      ) 
[1] => Array (
      [address] => 123 
      [address1] => 
     ) 


[2] => Array (
      [address] => 123 
      [address1] => asddff 
      ) 
[3] => Array (
      [address] => 123 
      [address1] => asddff 
     ) 
) 
+0

你到目前为止所尝试过的内容是为你尝试 –

+0

array_filter。 –

回答

0

只需随着array_map为您取消设置使用array_filter等作为

print_r(array_map('array_filter',$your_array)); 
+1

这将摆脱“地址2”。我相信OP希望那个人留下来。 – CodeGodie

+0

不希望_想检查所有数据的索引是否为空。 取消所有这些索引。@ @CodeGodie –

+1

在这种情况下,你明白了。 – CodeGodie

0

迭代,并通过引用传递。

foreach ($arr as &$a) { 
    if (empty($a['address3'])) { 
     unset($a['address3']); 
    } 
} 

var_dump($arr); 
+0

我们不能简单地使用'empty($ a ['address3']) '而不是'!isset($ a ['address3'])|| $ a ['address3'] ===“”' –

+0

不知道那个。这也可以使用。 – CodeGodie

0

我觉得array_filter会做你想做的事

$data_filtered = array_filter($data, function ($obj) { 
    return !is_null($obj['address2']); 
}); 
var_dump($data); 
var_dump($data_filtered); 

好,存储新的变量过滤的值是什么只是一个例子,你做任何你正在尝试做的。