php - 如何在数组中找到键?
问题描述
我有一个大数组 [3744](从文件中读取)。数组键总是变化的,并且没有相同的值。
首次运行蓝光:
输出 0:[55] => TINFO:0,10,0,“36.9 GB”
第二张DVD:
输出 1:[135] => TINFO:0,10,0,“5.7 GB”
但是版本的一部分是“TINFO:0,10,0”,总是一样的。
如何在我的数组中搜索“TINFO:0,10,0”以获取数组键,会很高兴吗?
<?php
$size=shell_exec("sudo makemkvcon -r info dev:/dev/sr0 | grep -i 'TINFO:0,10,0,'");
$size=substr($size, 14, -2);
?>
输出很完美,但是有多个查询需要很长时间,所以我将整个输出保存在文件中。
<?php
$BD_Info_array = file("../BD_Info");
$key = array_search('TINFO:0,10,0,', $BD_Info_array);
echo $BD_Info_array[$key];
?>
在这里我得到文件的第一行,这不是我想要的。
MSG:1005,0,1,"MakeMKV v1.14.3 linux(x64-release) started","%1 started","MakeMKV v1.14.3 linux(x64-release)"
解决方案
您将获得文件的第一行,因为如果在数组中找不到您要查找的内容,则array_search()
返回布尔值,因此设置为 FALSE。然后,当你做时,被解释为整数,所以你基本上得到与做相同的结果。FALSE
$key
echo $BD_Info_array[$key];
$key
0
echo $BD_Info_array[0]
您应该在打印该行之前使用身份运算符===
检查是否$key
真的是:FALSE
if ($key === FALSE) {
echo "Line not found!";
}
else {
echo $BD_Info_array[$key];
}
至于为什么array_search()
找不到你的线路,它的工作方式与 grep 不同。它将在数组中查找具有该确切值作为值的项。如果您希望您的 PHP 代码仅找到包含该子字符串的行,您将需要遍历由创建的数组file()
并用于strpos()
查找该行 - 但请注意,如果找不到匹配项,它strpos()
也会返回,并且FALSE
数值(可能为 0,因此计算结果为FALSE
),如果是的话。
推荐阅读
- java - 如何正确使用 Java 中的 Apollo Client 的 RxJava2 库进行同步调用?
- flutter - 启用或禁用通知颤动
- android - 为什么我的获取请求在反应本机时出现问题网络请求错误
- redis - Airflow 是否支持通过 TLS 连接代理 url?
- azure - 来自事件中心的系统日志数据未显示在 Azure 数据资源管理器中
- python - python venv如何管理C++依赖
- minecraft - 服务器重新启动时保存硬币?
- llvm - 发出 LLVM 目标文件后如何运行链接器
- php - 为什么它在php中显示错误的日期
- sockets - 端口耗尽和随机过程