2016-10-24 2 views
-1

Я хочу получить столбец в PHP массиве $slider это:PHP: выберите столбец в массиве с Неизвестной ошибкой индекса

 array(6) { 
    [0]=> 
    array(1) { 
    ["image"]=> 
    string(32) "themes/public/slideshow/ads1.jpg" 
    } 
    [1]=> 
    array(1) { 
    ["title1"]=> 
    string(1) "." 
    } 
    [2]=> 
    array(1) { 
    ["image"]=> 
    string(32) "themes/public/slideshow/ads2.jpg" 
    } 
    [3]=> 
    array(1) { 
    ["title1"]=> 
    string(1) "." 
    } 
    [4]=> 
    array(1) { 
    ["image"]=> 
    string(32) "themes/public/slideshow/ads3.jpg" 
    } 
    [5]=> 
    array(1) { 
    ["title1"]=> 
    string(1) "." 
    } 
} 

, когда я хочу получить столбец из этого массива PHP имеет ошибку Undefined index! эта ошибка существует на сервере, но не существует в localhost!

foreach ($slider as $slide) 
    { 

     $s = $slide['image']; 

     ?> 


     <div> 
      <img u="image" src2="<?php echo $url . "/$s" ?> " /> 
     </div> 

     <?php 

    } 

    ?> 

Неопределенное индекс: изображение в этой строке: $ s = $ слайд [ 'изображение'];

+0

'' ??? это не будет работать; удалить '2', а что означает' u = '? –

+0

@NikhilVaghela Неопределенное смещение: 6 in -> foreach ($ slider [6] as $ slide) – Saltern

+0

@ Синтаксис Fred-ii-! – Saltern

ответ

1

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

$slider = array (
    array (
    'image' => "themes/public/slideshow/ads1.jpg" 
), 
    array (
    'title1'=>"." 
), 
    array (
    'image'=>"themes/public/slideshow/ads2.jpg" 
), 
    array (
    'title1'=>"." 
), 
    array (
    'image'=>"themes/public/slideshow/ads3.jpg" 
), 
    array (
    'title1'=>"." 
), 
); 

$url = 'http://example.com'; 
foreach ($slider as $slide) 
{ 
    if (isset($slide['image'])) { 
     $s = $slide['image']; 
     echo $url . '/' . $s . '<br />'; 
    } 
} 

DEMO

0

В вашем массиве содержатся другие массивы, каждый из которых содержит одну строку. Но индексы всех этих подматриц не совпадают. Иногда это image, иногда это title1. но в вашем коде, вы используете только ключ image, на линии $s = $slide['image']; даже если это title1 один ...

Так проверить, если ключ существует, прежде чем использовать его:

if (array_key_exists('image', $slide) { 
    $s = $slide['image']; 
    ?> 
    <div> 
     <img u="image" src2="<?php echo $url . "/$s" ?> " /> 
    </div> 
    <?php 
} 
1

ошибка вы получаете довольно нормально, из-за того, что вы построили $slider!

Когда вы делаете foreach ($slider as $slide) вы получаете последовательные $slide, которые в качестве альтернативы, содержащий imageилиtitle1: другими словами один из двух членов не содержатimage индекс вы ищете.

В самом деле, вот как вы должны построить свой массив:

array(6) { 
    [0]=> 
    array(2) { 
    ["image"]=> 
    string(32) "themes/public/slideshow/ads1.jpg" 
    ["title1"]=> 
    string(1) "." 
    } 
    [1]=> 
    array(2) { 
    ["image"]=> 
    string(32) "themes/public/slideshow/ads2.jpg" 
    ["title1"]=> 
    string(1) "." 
    } 
    [2]=> 
    array(2) { 
    ["image"]=> 
    string(32) "themes/public/slideshow/ads3.jpg" 
    ["title1"]=> 
    string(1) "." 
    } 
} 

Тогда вы можете работать, как вы ожидали ...

+0

Извините, мне все равно! благодаря – Saltern

Смежные вопросы