gpt4 book ai didi

php - 如何使用 PHP 检查多个项目是否在数组中

转载 作者:搜寻专家 更新时间:2023-10-31 21:28:52 27 4
gpt4 key购买 nike

我正在读取一个由用户上传的 RTF 文件,然后我在每个\pard 上分解这个文件以获取每一行,然后将每一行 preg_split 到一个数组中。然后我遍历数组寻找某个值并获取它旁边的数据。所有这些都工作正常,但是多次查找多个字符串的最佳方法是什么?这是我目前所拥有的:

$data = explode('\pard',$rtf);

foreach ($data as $item) {
$values = preg_split('/[\t]/', $item);
if (in_array('shipped yesterday', $values)){
$key = array_search('shipped yesterday', $values);
print $values[$key + 1];
}else{
print_r($values);
}
}

RTF 文件如下所示:

booked in yesterday    50    41    78
packaged yesterday 62 45 48
shipped yesterday 46 52 62

所以我上面的代码正在寻找“昨天发货”,然后获取它旁边的第一个值,在本例中为 46。

对于“昨天预订”和“昨天打包”的其余值,最有效的方法是什么?

最佳答案

我认为最快的方法是一个简单的正则表达式。

preg_match_all('/((?:booked in|packaged|shipped) yesterday)\s+(\d+)/i',$rtf,$matches);
$values = array();
foreach($matches[1] as $key => $match){
$values[$match] = $matches[2][$key];
}
print_r($values);

这会将所有匹配的给定模式解析为一个数组

Array ( 
['booked in yesterday'] => '50'
['packaged yesterday'] => '62'
['shipped yesterday'] => '46'
)

请注意,如果您需要在传入数组之前解析的数值

$values[$match] = intval($matches[2][$key]);

matches 的输出是这样的,只是为了阐明数组的构建:

Array ( 
[0] => Array (
[0] => 'booked in yesterday 50'
[1] => 'packaged yesterday 62'
[2] => 'shipped yesterday 46'
)
[1] => Array (
[0] => 'booked in yesterday'
[1] => 'packaged yesterday'
[2] => 'shipped yesterday'
)
[2] => Array (
[0] => '50'
[1] => '62'
[2] => '46'
)
)

关于php - 如何使用 PHP 检查多个项目是否在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32452176/

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