Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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_Associative Array - Fatal编程技术网

Php 检查关联数组中的空值

Php 检查关联数组中的空值,php,associative-array,Php,Associative Array,我很难在关联数组中检查空值。如果某个值为空/null,则将其替换为“未输入” 我的$\u会话['gift']数组: Array ( [0] => Array ( [giftGiveMy] => 1a [giftTo] => 2a ) [1] => Array ( [giftGiveMy] => 1b [gi

我很难在关联数组中检查空值。如果某个值为空/null,则将其替换为“未输入”

我的$\u会话['gift']数组:

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
块中添加检查