我正在使用如下的php数组:
echo '<pre>', print_r($empData[$employee]['banks']).'</pre>';
Array
(
[0] => Array
(
[bank_name] => []
[bank_code] =>
[branch] =>
[account_number] =>
[account_type] =>
)
)
现在我需要检查一下,这个bank array
是否为空。这意味着所有索引都应该有一个值。
这是我尝试的方式:
$proceed = false;
foreach ($empData[$employee]['banks'] as $key) {
echo '<pre>', print_r($key).'</pre>';
foreach ($key as $k => $v) {
if (empty($empData[$employee]['banks'][$k])){
$proceed = true;
break;
}
}
}
if(!$proceed) {
echo 'This array is empty';
}
else {
echo 'This array is not empty';
}
但是,它不适合我。它总是会转向其他部分,即使数组不为空。
更新:
$proceed = false;
foreach ($empData[$employee]['banks'] as $bank) {
if (!array_filter($bank)) {
$proceed = true;
break;
}
}
if($proceed) {
echo 'This array is empty';
}
else {
echo 'This array is not empty';
}
Array1:它不是空的。但输出结果为Its not empty
。好吧
This array is not empty
Array
(
[0] => Array
(
[bank_name] => Bank Name
[bank_code] => 7083
[branch] => Branch Name
[account_number] => 234234324242
[account_type] => NRFC
)
)
Array2:它是空的。但输出结果为Its not empty
。所以错了
This array is not empty
Array
(
[0] => Array
(
[bank_name] => []
[bank_code] =>
[branch] =>
[account_number] =>
[account_type] =>
)
)
希望有人可以帮助我。
答案 0 :(得分:1)
修改强>
您的问题已更新几次。看起来您可能想要将$bank
视为&#34;空&#34;如果一个值未填充 - 如果所有值与函数匹配,则我的原始答案(下方)将仅返回true
。我们需要适应这一点的功能略有不同,array_some
。
function array_some(callable $f, array $xs) {
foreach (array_values($xs) as $x)
if (call_user_func($f, $x))
return true;
return false;
}
$input = [
[
'bank_name' => [],
'bank_code' => null,
'branch' => null,
'account_number' => null,
'accout_type' => null
],
[
'bank_name' => ['foobar'],
'bank_code' => 123,
'branch' => null,
'account_number' => null,
'accout_type' => null
],
[
'bank_name' => 'Bank Name',
'bank_code' => 7083,
'branch' => 'Branch Name',
'account_number' => '234234324242',
'accout_type' => 'NRFC'
]
];
function is_empty($x) { return empty($x); }
foreach ($input as $bank) {
$proceed = array_some('is_empty', $bank);
echo 'proceed:', json_encode($proceed), PHP_EOL;
}
// proceed:true
// proceed:true
// proceed:false
$proceed
将为true
$proceed
将为true
$proceed
将为false
原始答案:
您正在寻找的是array_every
功能。让我们从一个简单的例子开始:
function array_every(callable $f, array $xs) {
foreach (array_values($xs) as $x)
if (!call_user_func($f, $x))
return false;
return true;
}
function even($x) { return $x % 2 === 0; }
echo "even:", json_encode(array_every('even', [1,2,3])), PHP_EOL; // false
echo "even:", json_encode(array_every('even', [2,4,6])), PHP_EOL; // true
在第一个示例中,1
,2
和3
不是所有even
,因此输出为<强>假强>
在第二个示例中,2
,4
和6
全部为even
,因此输出为真强>
现在让我们看看你的数据
function array_every(callable $f, array $xs) {
foreach (array_values($xs) as $x)
if (!call_user_func($f, $x))
return false;
return true;
}
$input = [
[
'bank_name' => [],
'bank_code' => null,
'branch' => null,
'account_number' => null,
'accout_type' => null
],
[
'bank_name' => ['foobar'],
'bank_code' => 123,
'branch' => null,
'account_number' => null,
'accout_type' => null
]
];
function is_empty($x) { return empty($x); }
foreach ($input as $bank) {
$proceed = array_every('is_empty', $bank);
echo 'proceed:', json_encode($proceed), PHP_EOL;
}
// proceed:true
// proceed:false
在第一个示例数据中,所有数组值为empty
,因此$proceed
将为true
。
在第二个示例中,某些值为(非empty
),因此$proceed
将为false
。
注意:由于
empty
is a language construct and not a function,因此无法使用变量函数调用它。 - 这就是为什么我定义了一个可重用的is_empty
函数,而不是使用array_every('empty', ...)
- 这不起作用。
答案 1 :(得分:0)
您无需再运行额外的循环。如果要检查库数组中的所有字段是否为空,请使用array_filter()函数。
array_filter()迭代数组中的每个值,并将它们传递给回调函数。
如果回调函数返回true,则将数组中的当前值返回到结果数组中。数组键被保留。
foreach ($empData[$employee]['banks'] as $bank) {
if (!array_filter($bank)) {
$proceed = true;
break;
}
}
答案 2 :(得分:0)
nstore(\$hash, "$temp_dir/temp_file");
答案 3 :(得分:0)
您可以使用 array_walk_recursive
将用户定义的回调函数应用于每个元素 阵列。此函数将递归到更深的数组中。 注意:
您还可以使用空或不空数组
查看演示here请参阅修改**demo2 **
CODE:
<div class="carousel-inner" role="listbox">
<div class="item active">
<img src="http://i0.wp.com/www.cattywampur.com/wp-content/uploads/2016/03/8566819595_0f567e8594_k.jpg">
<div class="carousel-caption">
<h3>Traversing the Grand Canyon</h3>
</div>
</div>
<div class="item">
<img src="http://i2.wp.com/www.cattywampur.com/wp-content/uploads/2016/05/26300985983_713ab03dc1_k.jpg">
<div class="carousel-caption">
<h3>San Jacinto - Deer Springs Trail</h3>
</div>
</div>
</div>
答案 4 :(得分:-1)
对于EMPTY数组:
Array ( [Tags] => SimpleXMLElement Object ( [0] => ) )
非空:
Array ( [Tags] => SimpleXMLElement Object ( [0] =>,[1] => "s" ) )
答案 5 :(得分:-1)
$proceed = false;
foreach ($empData[$employee]['banks'] as $key) {
echo '<pre>', print_r($key).'</pre>';
foreach ($key as $k => $v) {
if (!empty($empData[$employee]['banks'][$k])){
$proceed = true;
} else{
$proceed = false;
break;
}
}
}
if($proceed) {
echo 'This array is empty';
}
else {
echo 'This array is not empty';
}
检查一下,可能对你有帮助。