php - PHP搜索多维数组的值并获取相关元素的值
问题描述
在 PHP 中,我希望通过搜索另一个值来从数组中提取一个值。我有 uri 值,我需要与 uri 对应的 playcount 值。
完成这项工作的最佳方法是什么?我现在拥有的:
$decoded = json_decode($response, true);
$trackids = 'spotify:track:'. $trackid .'';
$key = array_search($trackids, array_column($decoded, 'playcount'));
$result = $decoded[$key]['playcount'];
echo "Result: ";
echo $result;
我认为它不完整,不知道如何从那里开始,因为它不起作用..
数组:
Array
(
[success] => 1
[data] => Array
(
[uri] => spotify:album:3T4tUhGYeRNVUGevb0wThu
[name] => ÷ (Deluxe)
[cover] => Array
(
[uri] => https://i.scdn.co/image/ab67616d00001e02ba5db46f4b838ef6027e6f96
)
[year] => 2017
[track_count] => 16
[discs] => Array
(
[0] => Array
(
[number] => 1
[name] =>
[tracks] => Array
(
[0] => Array
(
[uri] => spotify:track:7oolFzHipTMg2nL7shhdz2
[playcount] => 181540969
[name] => Eraser
[popularity] => 63
[number] => 1
[duration] => 227426
[explicit] =>
[playable] => 1
[artists] => Array
(
[0] => Array
(
[name] => Ed Sheeran
[uri] => spotify:artist:6eUKZXaKkcviH0Ku9w2n3V
[image] => Array
(
[uri] => https://i.scdn.co/image/ab6761610000517412a2ef08d00dd7451a6dbed6
)
)
)
)
[1] => Array
(
[uri] => spotify:track:6PCUP3dWmTjcTtXY02oFdT
[playcount] => 966197832
[name] => Castle on the Hill
[popularity] => 79
[number] => 2
[duration] => 261153
[explicit] =>
[playable] => 1
[artists] => Array
(
[0] => Array
(
[name] => Ed Sheeran
[uri] => spotify:artist:6eUKZXaKkcviH0Ku9w2n3V
[image] => Array
(
[uri] => https://i.scdn.co/image/ab6761610000517412a2ef08d00dd7451a6dbed6
)
)
)
)
解决方案
$key = array_search($trackids, array_column($decoded, 'playcount'));
在这一行,你犯了两个错误。首先, $decode数组中没有像 playcount 这样的列。其次,您正在使用uri
关键字而不是playcount
关键字进行搜索。还有一件事,discs key 和 discs key 里面的 track,都是多维数组。因此,如果您想获取确切的值,此查询将是,
$decoded = array_map(function($x) {
return array_column($x, 'url');
}, array_column($decoded['data']['discs'], 'tracks'));
$decoded = call_user_func_array('array_merge', $decoded);
$key = array_search($trackids, $decoded);
推荐阅读
- ssl - 在 bitbucket 放弃对 TLS 1.0/1.1 的支持后,Jenkins 构建失败
- laravel - Laravel + Voyager + Blocks - 后端滑块和输出
- bash - Bash:在结果输出中粘贴文件名
- c - 在空行中打印变量结果
- python - 删除数据框中数据分区中的第一个值,重新索引并创建一个新列
- apache-spark - 了解 spark 中巨大的 shuffle 溢出大小
- python - 管理员的 Django 输入登录
- android - 切换应用程序时如何更改应用程序窗口中显示的颜色
- python - 线程池和对象的线程问题
- javascript - 在 php 中,If 和 Else 语句不适用于 javascript 位置函数