php - 如何在解码 JSON 后检查变量是否存在?
问题描述
我有这个 JSON 字符串。
[
{
"name": "user_title",
"value": "Bapak."
},
{
"name": "user_firstname",
"value": "Test"
},
{
"name": "user_lastname",
"value": "XXX"
}
]
这个字符串是动态生成的。它可能或多或少。我使用JSON 解码在 PHP 中处理它。
$json_form = json_decode($json_string,true);
$user_title = $json_form[0]['value'];
$user_firstname = $json_form[1]['value'];
$user_lastname = $json_form[2]['value'];
如何检查字符串中是否存在变量 user_title?
如果存在,我应该得到该值,但如果不存在,则意味着$user_title = NULL。
解决方案
您可能需要考虑使用 ; 将您的 JSON 映射到键/值数组中array_column
。那么很容易检查一个值的存在。例如:
$json_form = json_decode($json_string, true);
$values = array_column($json_form, 'value', 'name');
$user_title = $values['user_title'];
$user_firstname = $values['user_firstname'];
$user_lastname = $values['user_lastname'];
echo "title: $user_title\nfirst name: $user_firstname\nlast name: $user_lastname\n";
您的样本数据的输出是:
title: Bapak.
first name: Test
last name: XXX
缺少键时添加默认值也很容易,例如:
$user_title = $values['user_title'] ?? '';
推荐阅读
- discord.py - 在不同频道中使用相同的机器人覆盖机器人名称和图像
- html - 如何使滑块拇指流畅运动?
- azure - Azure 如何使用相同的服务计划将内存分配给应用程序?
- pandas - 根据唯一值将数据帧切成许多较小的数据帧
- r - 警告:库中的错误:尝试在 ec2 aws 中部署 shinyapp 时没有名为“shinythemes”的包
- rx-swift - RxSwift 以类似于 combineLatest 的顺序订阅最新元素
- java - Google Cloud Dataflow 使用什么 java 运行时?java8 或 java11
- javascript - 使用循环打印数独谜题然后解决它?
- mysql - MySQL:先按特定项目排序,然后按时间排序
- c++ - 检查字符串是否包含不仅仅是关键字 C++