php - 在 PHP 中用于 JSON 数据的 if 语句
问题描述
我有一些代码会查找名为 applications 的 JSON 字符串的分支,然后对于它找到的每个项目,它都会执行一些代码。
如果 JSON 包含“应用程序”,这可以正常工作,但如果不包含,则会失败。
我的 PHP
$json = file_get_contents("programs.json");
$array = json_decode($json, true);
foreach ($array['applications'] as $app) {
$application = $app['application'];
// Do some stuff
}
我的 JSON 看起来像这样:
{
"hostname": "MINIPC025",
"applications": [{
"application": "7-Zip 19.00 (x64)"
},
{
"application": "Active Directory Rights Management Services Client 2.1"
},
{
"application": "Adobe Acrobat Reader DC MUI"
}
]
}
所以我的问题是 - 是否可以放置某种 if 语句,如果applications
属性存在,则仅循环遍历 JSON 数据的应用程序位。
谢谢你。
解决方案
正如他们所说,有很多通往罗马的路。一个简单if
的,你可以在其中使用各种原生 PHP 函数,也可以使用 null-coalescing 运算符??
。
$array['applications']
他们最终都有相同的想法——如果存在就迭代。但是,这些检查都不会真正检查它是否是可迭代变量,因此如果是$array['applications'] = 'myString';
,您仍然会收到错误。您可以使用原生 PHP 函数is_iterable()
来检查。
使用空合并运算符??
foreach ($array['applications'] ?? [] as $app) {
// ...
}
使用array_key_exists()
if (array_key_exists('applications', $array)) {
foreach ($array['applications'] as $app) {
// ...
}
}
使用isset()
if (isset($array['applications'])) {
foreach ($array['applications'] as $app) {
// ...
}
}
使用!empty()
if (!empty($array['applications'])) {
foreach ($array['applications'] as $app) {
// ...
}
}
在上述内容中,我建议使用isset()
/!empty()
或 null-coalescing 运算符,因为array_key_exists()
对于$array['applications'] = null;
.
一些有用的相关阅读
推荐阅读
- overlay - 覆盖资产操作栏的“属性”按钮
- swift - 如何在 Xcode 10 (macOS) 的 Storyboard 中将 NSArrayController 绑定到应用程序委托上的属性?
- python-3.x - 扫描字符串文字时出现python语法错误EOL
- python - 单击单独文件中的命令
- drupal - Drupal 8 删除额外的 div 并在菜单中添加自定义类
- php - 每次我尝试安装 php-mysqli 扩展时,我都会收到类似“E:Package 'php-mysqli' has no installation Candidate”之类的错误
- c# - Asp.net Ajax MVC 登录重定向到主页不起作用
- python - 如何在 Pyspark 中使用重复键 countByValue?
- android - Android RemoveViewAt 不删除每个视图
- ios - Swift PHAsset 图像请求问题