我正在尝试显示存储在2个数组中的图像元数据...
当图像没有名称时,我想显示“ no-name”。这是我现在显示这些的方式:
$imgs = array('img 1','img 2','img 3','img 4','img 5','img 6');
$imgNames = array('name 1','name 2','name 3',);
foreach($imgs as $files => $img)
{
echo 'Image: '.$img.' and Name: '.$imgNames[$files].'<br>';
};
我希望输出:
Image: img 1 and Name: name 1
Image: img 2 and Name: name 2
Image: img 3 and Name: name 3
Image: img 4 and Name: no-name
Image: img 5 and Name: no-name
Image: img 6 and Name: no-name
但实际输出是:
Image: img 1 and Name: name 1
Image: img 2 and Name: name 2
Image: img 3 and Name: name 3
Notice: Undefined offset: 3 in XX.php …
Image:img 4 and Name:
Notice: Undefined offset: 4 in XX.php …
Image:img 5 and Name:
Notice: Undefined offset: 5 in XX.php …
Image:img 6 and Name:
如何解决此问题以显示默认的“无名称”字符串?
答案 0 :(得分:1)
您可以为此使用isset()
。 $imgNames
数组包含三个元素,而$imgs
包含六个元素,您已经遍历了$imgs
,这意味着它将运行六次,而$imgNames
的某些元素未定义。如果isset()
函数对当前$files
像$imgNames[$files]
返回false,那么它将被分配一个字符串'no-name'
<?php
$imgs = array('img 1','img 2','img 3','img 4','img 5','img 6');
$imgNames = array('name 1','name 2','name 3',);
foreach($imgs as $files => $img)
{
if(!isset($imgNames[$files]))
{
$imgNames[$files] = 'no-name';
}
echo 'Image: '.$img.' and Name: '.$imgNames[$files].'<br>';
}
?>
这里是demo
答案 1 :(得分:0)
ImagNames
有3个元素,而另一个数组有5个元素。
如果密钥不存在,您可以添加一张不打印的支票
foreach($imgs as $files => $img)
{
if(array_key_exists($files,$imgNames){
echo 'Image: '.$img.' and Name: '.$imgNames[$files].'<br>';
}
};