Php 检查关联数组中的空值
我很难在关联数组中检查空值。如果某个值为空/null,则将其替换为“未输入” 我的$\u会话['gift']数组:Php 检查关联数组中的空值,php,associative-array,Php,Associative Array,我很难在关联数组中检查空值。如果某个值为空/null,则将其替换为“未输入” 我的$\u会话['gift']数组: Array ( [0] => Array ( [giftGiveMy] => 1a [giftTo] => 2a ) [1] => Array ( [giftGiveMy] => 1b [gi
Array
(
[0] => Array
(
[giftGiveMy] => 1a
[giftTo] => 2a
)
[1] => Array
(
[giftGiveMy] => 1b
[giftTo] => '' //### empty ###
)
)
if (empty($_SESSION['gift']) && 0 !== $_SESSION['gift']) {
$gifts = "No specific gifts identified.\n";
} else {
$gifts = [];
foreach( $_SESSION['gift'] as $value) {
$gifts[] = "I give my ". $value['giftGiveMy'] ." to ". $value['giftTo'] .".\n";
}
$gifts = join($gifts);
}
上述产出:
我把我的1a给2a。我把我的钱给你 我想这样写: 我把我的1a给2a。
我将我的1b指定给未输入的您应该修改代码并按以下方式编写:
if (!isset($_SESSION['gift']) || empty($_SESSION['gift'])) {
$gifts = "No specific gifts identified.\n";
} else {
foreach( $_SESSION['gift'] as $value) {
$gift_to = !empty($value['giftTo']) ? $value['giftTo'] : '<strong>Not entered<strong>';
$gifts[] = "I give my ". $value['giftGiveMy'] ." to ". $gift_to .".\n";
}
}
$gifts = "No specific gifts identified.\n";
$filter = function($str) {
return empty($str) ? 'not entered' : $str;
};
if(!empty($_SESSION['gift'])) {
$gifts = '';
array_walk($_SESSION['gift'], function($given) use(&$gifts,$filter){
$gifts .= 'I give my ' . $filter($given['giftGiveMy']) . ' to ' . $filter($given['giftTo']) . ".\n";
});
}
if(!isset($_会话['gift'])| |空($_会话['gift'])){
$gifts=“未识别任何特定礼物。\n”;
}否则{
foreach($\会话['gift']作为$value){
$gift_to=!空($value['giftTo'])?$value['giftTo']:“未输入”;
$gifts[]=“我将我的“$value['giftGiveMy']”交给“$gifto”。\n”;
}
}
您可能想尝试以下方法:
if (empty($_SESSION['gift']) && 0 !== $_SESSION['gift']) {
$gifts = "No specific gifts identified.\n";
} else {
$gifts = [];
foreach( $_SESSION['gift'] as $value) {
$gifts[] = "I give my ". $value['giftGiveMy'] ." to ". (!empty($value['giftTo']) ? $value['giftTo'] : '<b>not entered</b>') .".\n";
}
$gifts = join($gifts);
}
if(空($\u会话['gift'])和&0!=$\u会话['gift'])){
$gifts=“未识别任何特定礼物。\n”;
}否则{
$gifts=[];
foreach($\会话['gift']作为$value){
$gifts[]=“我将我的“$value['giftGiveMy']”交给“(!empty($value['giftTo'])?$value['giftTo']:'未输入]”。\n”;
}
$gifts=加入($gifts);
}
如果你想让它更干净一点,你可以把三元运算符提取成这样的东西
$giftTo = !empty($value['giftTo']) ? $value['giftTo'] : '<b>not entered</b>';
$gifts[] = "I give my ". $value['giftGiveMy'] ." to ". $giftTo .".\n";
$gifto=!空($value['gifto'])$值['gifto']:'未输入';
$gifts[]=“我给我的礼物”$值['giftGiveMy'].“to”$“吉托。”。\n”;
试试:
只需使用
foreach
循环所有值并检查其是否正确
$emptyText='未输入';
//如果元素不存在,“empty”也将为true
if(空($\u会话['gift'])){
$gifts=“未识别任何特定礼物。\n”;
}否则{
$gifts=[];
foreach($\会话['gift']作为$value){
$myGive=!empty($value['giftGiveMy'])?$value['giftGiveMy']:$emptyText;
$giftTo=!empty($value['giftTo'])?$value['giftTo']:$emptyText;
$gifts[]=“我把我的{$myGive}给了{$giftTo}。”;
}
$gifts=内爆(“\r\n,$gifts);//或`
`如果输出到HTML
}
在数组\u walk\u recursive
的帮助下,您可以用未输入的替换所有空值和空值,并按原样使用代码
array_walk_recursive($arrayMain, 'not_entered');
function not_entered(& $item, $key) {
if (($item === "") || ($item ==NULL)){
$item = "not entered";
}
}
var_dump($arrayMain);
我会这样写:
if (!isset($_SESSION['gift']) || empty($_SESSION['gift'])) {
$gifts = "No specific gifts identified.\n";
} else {
foreach( $_SESSION['gift'] as $value) {
$gift_to = !empty($value['giftTo']) ? $value['giftTo'] : '<strong>Not entered<strong>';
$gifts[] = "I give my ". $value['giftGiveMy'] ." to ". $gift_to .".\n";
}
}
$gifts = "No specific gifts identified.\n";
$filter = function($str) {
return empty($str) ? 'not entered' : $str;
};
if(!empty($_SESSION['gift'])) {
$gifts = '';
array_walk($_SESSION['gift'], function($given) use(&$gifts,$filter){
$gifts .= 'I give my ' . $filter($given['giftGiveMy']) . ' to ' . $filter($given['giftTo']) . ".\n";
});
}
您可以使用以下代码,也不需要任何额外的Php函数。
$arr = array(
0 => array(
'giftGiveMy' => '1a',
'giftTo' => '2a'
),
1 => array(
'giftGiveMy' => '1b',
'giftTo' => ''
)
);
$str = '';
if (!empty($arr)) {
foreach ($arr as $key => $value) {
if ($value['giftGiveMy'] == '')
$value['giftGiveMy'] = 'not entered';
if ($value['giftTo'] == '')
$value['giftTo'] = '<strong>not entered</strong>';
//$new[$key] = $value;
$str .= "I give my " . $value['giftGiveMy'] . " to " . $value['giftTo'] . "<br />";
}
}else {
$str = 'No specific gifts identified.<br />';
}
echo $str;
$arr=array(
0=>数组(
'giftGiveMy'=>'1a',
“giftTo”=>“2a”
),
1=>数组(
'giftGiveMy'=>'1b',
“giftTo”=>“
)
);
$str='';
如果(!empty($arr)){
foreach($arr作为$key=>$value){
如果($value['giftGiveMy']='')
$value['giftGiveMy']='未输入';
如果($value['gifto']='')
$value['gifto']='未输入';
//$new[$key]=$value;
$str.=“我把我的“$value['giftGiveMy']”给“$value['giftTo']”,
”;
}
}否则{
$str='未识别特定礼物。
;
}
echo$str;
这将验证带有empty()
的关联数组(请参见),但可能不会回答原始问题
<?php
$var = array();
$var['position'] = 'executive';
$var['email'] = 'a@email.com';
$var['message'] = 'This is the message';
$var['name'] = 'John Doe';
$var['telephone'] = '123456789';
$var['notneededparam'] = 'Nothing';
$expectedParams = ['position', 'email', 'message', 'name', 'telephone'];
$params = array_intersect_key($var, array_flip($expectedParams));
// check existence of keys and that they are valid
if(count($params) != count($expectedParams) || count(array_filter($params)) != count($expectedParams)){
echo "not valid\n";
die();
}
extract($params);
var_dump($name);
你已经知道它是多维的,你不能仅仅依靠空($\u SESSION['gift'])
这只检查第一级,只需在foreach
块中添加检查