php - 如何从 Joomla 中的 json 编码的数据库表列值中提取单个值?
问题描述
我正在尝试通过 PHP/Sql Query 从 Joomla 获取图像 url。这是一个多维数组或对象,但我无法获得第二维。
那是什么数据类型?我必须以某种方式转换它吗?我已经尝试过“loadAssocList()”和“loadObjectList()”,但都给了我奇怪的数据。
如何将其转换为多维数组,甚至更好地访问该$r[images][intro_image]
值?为什么斜线会在那里逃脱?
Joomla DB 查询,如文档中的:
$db = JFactory::getDbo();
$id = 9; //example
$query = $db->getQuery(true);
$query->select('*');
$query->from('#__content');
$query->where('catid="'.$id.'"');
$db->setQuery((string)$query);
$res = $db->loadAssocList();
?>
<?php foreach($res as $r): ?>
<pre>
<?php print_r($r); ?>
</pre>
<?php endforeach; ?>
PHP 响应数组:
[fulltext] =>
[state] => 1
[catid] => 9
[created] => 2018-09-10 20:45:29
[created_by] => 165
[created_by_alias] =>
[modified] => 2018-09-14 08:28:52
[modified_by] => 165
[checked_out] => 165
[checked_out_time] => 2018-09-14 08:32:10
[publish_up] => 2018-09-10 20:45:29
[publish_down] => 0000-00-00 00:00:00
[images] => {"image_intro":"images\/thumb_2017-28-04-Taspo.jpg","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"images\/thumb_2017-28-04-Taspo.jpg","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}
[urls] => {"urla":"\/images\/\/Presseartikel\/2017-28-04-Taspo-optimiert.pdf","urlatext":"","targeta":"","urlb":false,"urlbtext":"","targetb":"","urlc":false,"urlctext":"","targetc":""}
[attribs] => {"article_layout":"","show_title":"","link_titles":"","show_tags":"","show_intro":"","info_block_position":"","info_block_show_title":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_associations":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_page_title":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}
[version] => 5
我需要从数组的这一部分读取数据:
{"image_intro":"images\/thumb_2017-28-04-Taspo.jpg","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"images\/thumb_2017-28-04-Taspo.jpg","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}
解决方案
图像采用 JSON 格式,因此您首先需要解码该数据。
$images = json_decode($r['images']);
print_r($images);
然后您可以image_intro
使用以下代码访问 -
$images->image_intro;
推荐阅读
- reactjs - 使用@testing-library/user-event 进行测试以选择多个选项不会在“onChange”回调中发送正确的值?
- ignite - 工作窃取配置在 Apache Ignite 中不起作用
- machine-learning - 困惑的学生 ft. 机器学习
- node.js - Node Js jest 测试用例
- javascript - this.state.names.map 不是函数
- javascript - 易受攻击的 JavaScript 库 jquery-1.7.1.js
- laravel - Laravel 懒惰收集海量数据
- python - 为什么即使它不为空,我也会收到“ValueError:NaTType 不支持 strftime”?
- c# - 将 JSON 从 T 更改为 List
- typescript - 错误:不变量失败:您不应该在外部使用
(故事书)