Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在数组中查找密钥?_Php_Arrays_Linux - Fatal编程技术网

Php 如何在数组中查找密钥?

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

我有一个大数组[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);
?>

获取文件的第一行是因为
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)"