gpt4 book ai didi

php - array_map 两个回调函数合二为一

转载 作者:行者123 更新时间:2023-12-01 22:33:04 25 4
gpt4 key购买 nike

这是我的代码:

$sc = 'hello 8491241 some text 6254841 some text 568241 414844:412';
preg_match_all('/[0-9]{5,10}/', $sc, $matches1);
preg_match_all('/[0-9]{5,10}:[0-9]{1,5}/', $sc, $matches2);

function cub1($match)
{

return array(
'batch' => $match,
'type' => '1',
);

}

function cub2($match)
{
return array(
'batch' => $match,
'type' => '2',
);
}

$pr_matches1 = array_map('cub1', $matches1[0]);
$pr_matches2 = array_map('cub2', $matches2[0]);

$all_matches = array_merge($pr_matches1,$pr_matches2);

它工作正常,我想问一下是否可以改进我的代码并将 array_map 回调函数(cub1 和 cub2)作为一个函数(cub),我只需要为 $matches1 设置不同的“类型”和 $matches2

有什么想法吗?

最佳答案

是的,这是可能的,在函数中识别它来自哪个数组有点棘手。但这应该适合你:

(这里我只是用strpos()来识别它是匹配形式$matches1还是来自$matches2,因为只有第二个数组可以包含 :)

<?php

$sc = 'hello 8491241 some text 6254841 some text 568241 414844:412';
preg_match_all('/[0-9]{5,10}/', $sc, $matches1);
preg_match_all('/[0-9]{5,10}:[0-9]{1,5}/', $sc, $matches2);

function cub($m) {

if(strpos($m, ":") !== FALSE) {
return array(
'batch' => $m,
'type' => '2',
);
} else {
return array(
'batch' => $m,
'type' => '1',
);
}


}

$all_matches = array_map("cub", array_merge($matches1[0], $matches2[0]));
print_r($all_matches);

?>

输出:

Array ( [0] => Array ( [batch] => 8491241 [type] => 1 ) [1] => Array ( [batch] => 6254841 [type] => 1 ) [2] => Array ( [batch] => 568241 [type] => 1 ) [3] => Array ( [batch] => 414844 [type] => 1 ) [4] => Array ( [batch] => 414844:412 [type] => 2 ) )

关于php - array_map 两个回调函数合二为一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28622355/

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