根据数组索引值访问图像

时间:2017-01-12 06:32:45

标签: php arrays indexing

PHP和网页设计的新手,并使用一些基于图像的PHP脚本。

我一直在寻找一种基于当前数组值访问唯一图像值的方法,但似乎找不到这样做的方法。我发现的所有示例都将图像列在初始数组中,然后在foreach循环中调用。是否可以在没有首先在阵列中声明它的情况下访问某些东西?只是试图避免双重处理,因为image(n).jpg将始终与索引值匹配。即item1 = item1.jpg,item2 = item2.jpg等等。

这是我的代码(我会注意到无效的行):

$examples = array
(
    'item1' => array
    (
        'title' => 'title of item 1',
        'price' => 'price of item 1',
        'desc' => 'description of item 1'
    ),
    'item2' => array
    (
        'title' => 'title of item 2',
        'price' => 'price of item 2',
        'desc' => 'description of item 2'
    )
);

foreach ($examples as $eid => $example)
{
    echo "<div class='exmple' id='eid_$eid'>";
    echo "<h3>{$exmple['title']}</h3>";
    echo "</div>";
    echo "<p>{$example['price']}</p>";
    echo "<p>{$example['desc']}</p>";
    //INCORRECT LINE BELOW
    echo '<img src="'.$example['img'].'">'; 
}

上面的错误行引用了一个索引项:

'img' => 'xyz.jpg' 

在初始item1,item2数组中不存在。

是否可以让foreach循环根据当前索引值创建指向图像的链接?或者我只是将它添加到每行的原始数组中。

假设文件名称正确。具有.jpg文件扩展名,并且在同一目录中输出应如下所示:

<h3>title of item 1</h3>
<p>price of item 1</p>
<p>description of item 1</p>
<img scr="image1.jpg>

(请注意,我不打算重命名上传的任何文件,这是假设它们已正确上传,格式正确等)

感谢所有人的冗长阅读!

编辑:

计数器的想法非常适合增量增加,但是可以根据阵列名称/数字来识别图像吗?也就是说两个阵列完全不同且不顺序:

'dog56' => array
(
.....
)

'cat72' ==> array
(
...
)

通过这种方式,它找到了dog56.jpg img,然后找到了72只img。

(即img src基于数组值)

<img scr="dog56.jpg>

亲切的问候

Ben S

5 个答案:

答案 0 :(得分:0)

试试这个:

$i = 1;

    foreach ($examples as $eid => $example)
    {
        echo "<div class='exmple' id='eid_$eid'>";
        echo "<h3>{$exmple['title']}</h3>";
        echo "</div>";
        echo "<p>{$example['price']}</p>";
        echo "<p>{$example['desc']}</p>";
        //INCORRECT LINE BELOW
        echo '<img src="image'.$i.'.jpg">'; 
    $i++;
    }

答案 1 :(得分:0)

试试这个

    $examples = array
    (
        'item1' => array
        (
            'title' => 'title of item 1',
            'price' => 'price of item 1',
            'desc' => 'description of item 1'
        ),
        'item2' => array
        (
            'title' => 'title of item 2',
            'price' => 'price of item 2',
            'desc' => 'description of item 2'
        )
    );
    $counter = 1;
    foreach ($examples as $eid => $example)
    {
        echo "<div class='exmple' id='eid_$eid'>";
        echo "<h3>{$exmple['title']}</h3>";
        echo "</div>";
        echo "<p>{$example['price']}</p>";
        echo "<p>{$example['desc']}</p>";
        echo '<img src="image'.$counter.'.jpg">';

        $counter++; 
    }

答案 2 :(得分:0)

试试这个

foreach ($examples as $eid => $example)
{
    echo "<div class='exmple' id='eid_$eid'>";
    echo "<h3>{$exmple['title']}</h3>";
    echo "</div>";
    echo "<p>{$example['price']}</p>";
    echo "<p>{$example['desc']}</p>";
    //INCORRECT LINE BELOW
    $image = 'image'.($eid+1).'.jpg';
    if(file_exists($image)) {
        echo '<img src="'.$image.'">'; 
    }
}

答案 3 :(得分:0)

如果您的图片名称始终与数组键匹配,请尝试以下操作: `echo&#39;&#39;;

答案 4 :(得分:0)

感谢您的帮助和信息。

我能够通过用以下代码替换错误的行来找到解决方案:

`echo '<img src="'.$eid.'.jpg">';

现在数组项目是什么,它所来源的文件名将匹配。

编辑:我无法将此标记为“已解决”2天抱歉。