Примечание: неопределенное смещение: разные строки - PullRequest
0 голосов
/ 21 апреля 2019

Я пытаюсь отобразить метаданные изображений, хранящиеся в 2 массивах ...
Когда у изображений нет имени, я бы вместо этого хотел отобразить «без имени». Вот как я теперь их отображаю:

$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: 

Как я могу исправить это, чтобы отобразить строки по умолчанию "без имени"?

Ответы [ 2 ]

1 голос
/ 21 апреля 2019

Вы можете использовать isset() для этой цели.Массив $imgNames содержит три элемента, в то время как $imgs содержит шесть, и вы перебрали $imgs, что означает, что он будет выполняться шесть раз, оставляя $imgNames неопределенным для некоторых его элементов.Если функция isset() возвращает значение false для текущего $files, например $imgNames[$files], тогда ей будет присвоена строка '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

0 голосов
/ 21 апреля 2019

ImagNames имеет 3 элемента, в то время как другой массив имеет 5 элементов.

Вы можете добавить проверку, чтобы не печатать ее, если ключ не существует

foreach($imgs as $files => $img)
{

 if(array_key_exists($files,$imgNames){

   echo 'Image: '.$img.' and Name: '.$imgNames[$files].'<br>';
 }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...