我正在使用以下代码,无论条件如何,都会给出相同的结果;
foreach($data as $row)
{
$a = $row['name']; //Here I am calling name from an api
if(empty($a))
{
$a = 'AAA'; // Checking if a$ = $row['']; i.e. 'name' does not exist
}
echo $a;
}
问题是当$row['name']
有值时,它会通过$a
回显,但如果$row['name']
不存在,我会收到错误,因为未定义索引:(可能是因为' name'不适用于该行。)
如果$a
不存在,如何'AAA'
回复为$row['name']
?
答案 0 :(得分:1)
尝试检查实际数组,而不是null的声明。
if(!isset($row['name']))
$a = "AAAA";
差异很微妙但很重要:
isset
- 确定变量是否已设置且不是 NULL
empty
- 确定变量是否为空
is_null
- 查找变量是否为NULL
答案 1 :(得分:1)
像这样写type Field = {test: {more: number} | null}
let fields: Field[] = [{test: {more: 55}}]
let d = fields[0];
if (d.test) {
d.test.more = 55 // object is possibly null
}
部分:
else
foreach($data as $row){
if(empty($row['name']) || ! isset($row['name']) )
{
$a = 'AAA';}
}
else
{
$a = $row['name'];
}
echo $a;
}
检查变量是否包含值(False,0或空字符串),但不是NULL。如果var存在则返回isset()
;否则TRUE
。
另一方面,FALSE
函数检查变量是否为空值空字符串,0,NULL或False。如果var具有非空和非零值,则返回empty()
。
答案 2 :(得分:0)
在进行测试之前检查名称是否已设置,然后合并为单个语句。
$a = (isset($row['name']) ? $row['name'] : 'AAA');
echo $a;
答案 3 :(得分:0)
有三种功能可供选择,它们有以下不同之处:
array_key_exists($key, $array)
null
),它都会返回true
,false
oterhwise。isset($array[$key])
null
。如果它存在且不是null
,它将返回true
,false
oterhwise。empty($array[$key])
null
,false
,''
或0
),则会返回true
,否则false
。所有这些功能都有共同点,你可以直接在阵列上调用它们。对你来说,你可以这样称呼它:
foreach($data as $row) {
echo array_key_exists('name', $row) ? $row['name'] : 'AAA';
}
您可以将array_key_exists('name', $row)
与其他两个函数交换,具体取决于您想要的行为类型。