Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter中从数组中提取图像值_Php_Mysql - Fatal编程技术网

Php Codeigniter中从数组中提取图像值

Php Codeigniter中从数组中提取图像值,php,mysql,Php,Mysql,我在通过Codeigniter/MySQL从图像数组中提取值时遇到问题。因此,我的数据库中有一个名为“image”的表,如果我回显它,我会得到以下代码: {"f01efdf6fe3b2bb387d3094aa701203f":{"filename":"f01efdf6fe3b2bb387d3094aa701203f.jpg","alt":"","caption":"","primary":true},"b11581adadd1848acb2898e7a284afc1":{"filename":"

我在通过Codeigniter/MySQL从图像数组中提取值时遇到问题。因此,我的数据库中有一个名为“image”的表,如果我回显它,我会得到以下代码:

{"f01efdf6fe3b2bb387d3094aa701203f":{"filename":"f01efdf6fe3b2bb387d3094aa701203f.jpg","alt":"","caption":"","primary":true},"b11581adadd1848acb2898e7a284afc1":{"filename":"b11581adadd1848acb2898e7a284afc1.png","alt":"","caption":""},"2cfee6d3c334696833b1cfe13910fcf1":{"filename":"2cfee6d3c334696833b1cfe13910fcf1.png","alt":"","caption":""}}
正如您可以看到的,这里有3个图像,我需要的是回显“primary”值为的图像:在foreach循环中为true

编辑:


  • 也许:

    $array = json_decode($stringFromDatabase, true);
    $primary = false;
    foreach ($array as $longStringDontCare => $imageArray) {
        if (!empty($imageArray['primary'])) {
           $primary = $imageArray;
           break;
        }
    } 
    if ($primary) {
       echo $primary['filename'];// should give: f01efdf6fe3b2bb387d3094aa701203f.jpg
    }
    
    给你最后一个提示:

    <?php
    function getPrimaryImageFromJsonString($stringFromDatabase) {
        $array = json_decode($stringFromDatabase, true);
        $primary = false;
        foreach ($array as $longStringDontCare => $imageArray) {
            if (!empty($imageArray['primary'])) {
               $primary = $imageArray;
               break;
            }
        } 
        if ($primary) {
           return $primary['filename'];
        }
        return null;
    }
    ?>
    
    
    <?php foreach ($query->result() as $row): ?>
    
    <li><a href="/<?=$row->slug?>"><?=$row->id?></a></li>
    <li><?=$row->name?></li>
    <li><?php echo getPrimaryImageFromJsonString($row->images);?></li>
    <li><?=$row->description?></li>
    
    <?php endforeach; ?>
    
    
    

  • L.E:一些编辑。

    您必须首先解码json编码的字符串并从中提取主图像:

    下面是一个可以用来提取主图像的小函数:(如果使用CodeIgniter,可以将此函数放在Helper中)

    您可以通过以下方式在视图中调用上述函数:

    <?php foreach ($query->result() as $row): ?>
    
    <li><a href="/<?=$row->slug?>"><?=$row->id?></a></li>
    <li><?=$row->name?></li>
    <li> <?=get_primary_image($row->images)?></li><!-- Here, you call above function -->
    <li><?=$row->description?></li>
    
    <?php endforeach; ?>
    
    
    

  • 我编辑了上面的问题,因为我已经有了一个foreach循环,有什么想法吗?;)您需要使用
    json\u encode
    函数将json字符串解析为数组。您可以使用嵌套的
    foreach
    循环。我理解,谢谢您的帮助,我非常感谢。但是,我仍然在努力,因为“$stringFromDatabase”实际上在我正在使用的foreach循环中。如果您能再给我一个例子,我在上面添加了我的完整代码。这将是非常感谢,因为我从来没有这样做过;)。。。非常感谢。我想知道这是如何得到一个向上投票的,因为它没有考虑数组键是一个哈希字符串,它的值是另一个数组。@Twisted1919:我已经测试了上述代码,工作正常……我不知道,你希望我考虑什么?请详细说明一下。。。。
    function get_primary_image($encode_json_data)
    {
        $primary_image = '';
        $decoded_json = json_decode($encode_json_data);
        foreach($decoded_json as $obj)
        {
            if(isset($obj->primary) && $obj->primary == 1)
                $primary_image = $obj->filename;
        }
        return $primary_image;
    }
    
    <?php foreach ($query->result() as $row): ?>
    
    <li><a href="/<?=$row->slug?>"><?=$row->id?></a></li>
    <li><?=$row->name?></li>
    <li> <?=get_primary_image($row->images)?></li><!-- Here, you call above function -->
    <li><?=$row->description?></li>
    
    <?php endforeach; ?>