获取阵列中的特定位置

时间:2014-02-20 17:57:12

标签: php arrays

我有以下问题。在管理面板中,我有一个多图库。用户可以选择多张图片并保存。数据在DB中播放如下:

<br />::nossos_trabalhos_galeria_x::3::/nossos_trabalhos_galeria_x::<br /><br />::nossos_trabalhos_galeria|0|nossos_trabalhos_galeria_x::images/nossos_trabalhos/53/lighthouse.jpg::/nossos_trabalhos_galeria|0|nossos_trabalhos_galeria_x::<br />::nossos_trabalhos_galeria|1|nossos_trabalhos_galeria_x::images/nossos_trabalhos/53/penguins.jpg::/nossos_trabalhos_galeria|1|nossos_trabalhos_galeria_x::<br />::nossos_trabalhos_galeria|2|nossos_trabalhos_galeria_x::images/nossos_trabalhos/53/koala.jpg::/nossos_trabalhos_galeria|2|nossos_trabalhos_galeria_x::<br />

所以做'选择'并抓住结果:

$db = &JFactory::getDBO();

$table = '#__cck_store_form_nossos_trabalhos';

$select_query = "SELECT nossos_trabalhos_galeria_x FROM $table";

$db->setQuery($select_query);

$db->query();

$row = $db->loadRow();

但对我来说最重要的是形象路径。然后我可以通过'爆炸'来区分他的位置:

$r1 = explode('::',$row[0]);
var_dump($r1);

所以我得到了结果:

array (size=17)
  0 => string '<br />' (length=6)
  1 => string 'nossos_trabalhos_galeria_x' (length=26)
  2 => string '3' (length=1)
  3 => string '/nossos_trabalhos_galeria_x' (length=27)
  4 => string '<br /><br />' (length=12)
  5 => string 'nossos_trabalhos_galeria|0|nossos_trabalhos_galeria_x' (length=53)
  6 => string 'images/nossos_trabalhos/53/lighthouse.jpg' (length=41)
  7 => string '/nossos_trabalhos_galeria|0|nossos_trabalhos_galeria_x' (length=54)
  8 => string '<br />' (length=6)
  9 => string 'nossos_trabalhos_galeria|1|nossos_trabalhos_galeria_x' (length=53)
  10 => string 'images/nossos_trabalhos/53/penguins.jpg' (length=39)
  11 => string '/nossos_trabalhos_galeria|1|nossos_trabalhos_galeria_x' (length=54)
  12 => string '<br />' (length=6)
  13 => string 'nossos_trabalhos_galeria|2|nossos_trabalhos_galeria_x' (length=53)
  14 => string 'images/nossos_trabalhos/53/koala.jpg' (length=36)
  15 => string '/nossos_trabalhos_galeria|2|nossos_trabalhos_galeria_x' (length=54)
  16 => string '<br />' (length=6)

我最大的问题是,如何在阵列中获取图像路径以创建图库?

-----编辑-----

感谢您的回复。以一种非常简单的方式解决了我的问题。我通过名为joomla'getValue'的选项调用了同样的结果,他给我带来了数组stdClass中的所有数据。然后它就足以做一个foreach并召集这个职位。

3 个答案:

答案 0 :(得分:0)

您将不得不使用正则表达式来检查给定项目是否为图像URL。如果是,则将其添加到新阵列或使用它做一些事情。

答案 1 :(得分:0)

如果你有多种类型的图像,那么你可以使用以下代码来提取图像网址:

$ext  = array("jpg","jpeg","png","gif");

$gallery_url = array_filter(array_map(function($var) use($ext){return in_array(end(explode(".", $var)),$ext)?$var:false;}, $r1));
print_r($gallery_url);

gallery_url是一个只有图片网址的数组

编辑:如果图像是相同的类型,那么:

$gallery_url = array_filter(array_map(function($var){return end(explode(".", $var))=='jpg'?$var:false; },$r1));

答案 2 :(得分:0)

对于初学者来说 - 如果所有图像都是jpeg,那么循环遍历数组并查找以.jpg结尾的所有行(或者图像类型可能是什么)。引用另一个问题:startsWith() and endsWith() functions in PHP