gpt4 book ai didi

php - 如何在数组中查找键?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:32:04 26 4
gpt4 key购买 nike

我有一个大数组 [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() 在数组中找不到您要查找的内容,它会返回 bool 值 FALSE,所以 $key 被设置为 FALSE。然后,当你执行 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) 如果是。

关于php - 如何在数组中查找键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56509590/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com