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