php:在数组中选择具有未定义索引错误的列

时间:2016-10-24 12:04:35

标签: php arrays

我想在PHP数组中获取列 $slider就是这样:

        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 = $ slide [&#39; image&#39;];

3 个答案:

答案 0 :(得分:1)

由于您构建youruser ALL = (root) NOPASSWD: /some/path/your/command 的方式,您获得的错误非常正常!

执行$slider后,您会得到连续的foreach ($slider as $slide),其中包含$slide image:换言之,其中一个成员< strong>不包含您正在寻找的title1索引。

实际上,以下是构建数组的方法:

image

然后你可以像预期的那样工作......

答案 1 :(得分: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

答案 2 :(得分: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
}