我有以下数组,需要使用 PHP 检查其中是否有任何值。
Array (
[amazon_uk] => Array(
[retailer_link_or_sku] =>
[affiliate_url] =>
)
[awd_it] => Array(
[retailer_link_or_sku] =>
[affiliate_url] =>
)
[ccl_online] => Array(
[retailer_link_or_sku] =>
[affiliate_url] =>
)
)
例如,我希望上面的数组返回空,因为 [retailer_link_or_sku] 或 [affiliate_url] 数组键都没有值。
但是,我希望以下数组返回非空,因为其中有几个键具有“value123”:
Array (
[amazon_uk] => Array(
[retailer_link_or_sku] => value123
[affiliate_url] =>
)
[awd_it] => Array(
[retailer_link_or_sku] =>
[affiliate_url] =>
)
[ccl_online] => Array(
[retailer_link_or_sku] => value123
[affiliate_url] =>
)
)
我已经尝试过 (empty($array)), (!array_filter($array)), sizeof($array) 但我认为因为主数组内部有一些值,例如[amazon_uk] & [awd_it] & [ccl_online],它们都返回非空,即使它们本身都没有值。
任何帮助将不胜感激。谢谢!
您可以使用递归来迭代所有条目。一旦设置了值,就返回 true。
$arrayWithValues = [
'amazon_uk' => [
'retailer_link_or_sku' => 'value123',
'affiliate_url' => ''
],
'awd_it' => [
'retailer_link_or_sku' => '',
'affiliate_url' => ''
],
'ccl_online' => [
'retailer_link_or_sku' => 'value123',
'affiliate_url' => ''
]
];
$arrayWithoutValues = [
'amazon_uk' => [
'retailer_link_or_sku' => '',
'affiliate_url' => ''
],
'awd_it' => [
'retailer_link_or_sku' => '',
'affiliate_url' => ''
],
'ccl_online' => [
'retailer_link_or_sku' => '',
'affiliate_url' => ''
]
];
function hasValue(array $array): bool
{
foreach ($array as $value) {
if (is_array($value)) {
if (hasValue($value)) {
return true;
}
}
elseif ('' !== $value) {
return true;
}
}
return false;
}
var_dump(hasValue($arrayWithValues)); // true
var_dump(hasValue($arrayWithoutValues)); // false