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 如何在数组中查找密钥?,php,arrays,linux,Php,Arrays,Linux,我有一个大数组[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:/d
<?php
$size=shell_exec("sudo makemkvcon -r info dev:/dev/sr0 | grep -i 'TINFO:0,10,0,'");
$size=substr($size, 14, -2);
?>
获取文件的第一行是因为
array\u search()
如果在数组中找不到要查找的内容,则返回布尔值FALSE
,因此$key
被设置为FALSE。然后,当您执行echo$BD_Info_数组[$key]
,$key
被解释为整数0
,因此基本上得到的结果与执行echo$BD\u Info\u数组[0]
得到的结果相同
在打印行之前,您应该使用标识操作符==
检查$key
是否真的为FALSE
:
if($key===FALSE){
回显“未找到线路!”;
}
否则{
echo$BD_Info_数组[$key];
}
至于为什么array\u search()
找不到您的行,它的工作方式与grep不同。它将在数组中查找具有该确切值作为值的项。如果希望PHP代码只查找包含该子字符串的行,则需要遍历由file()
创建的数组,并使用strpos()
查找该行-但请注意,strpos()
如果未找到匹配项,也会返回FALSE
,并返回一个数值(可能是0,因此计算为FALSE
)如果是这样的话。我这样解决:
///获取大小
$lines=文件('../BD_Info');
$searchstr='TINFO:0,10,0';
foreach($line作为$line){
if(strpos($line$searchstr)!==false){
$size[]=$line;
}
}
echo$size[0];///OUTPUT>TINFO:0,10,0,“36.9 GB”
echo substr($size[0],14,-2);///输出>36.9 GB
<?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)"