Php 在数组中搜索匹配的部分值
我需要在数组中搜索以$target值开头的值。另外,Php 在数组中搜索匹配的部分值,php,arrays,Php,Arrays,我需要在数组中搜索以$target值开头的值。另外,$target值将不限于3位数字,因此我正在搜索连字符前的数字匹配 所以我想以 $target = 285 $array = array("260-315", "285-317", "240-320") 注意:我只是在搜索连字符前的数字匹配,因此“200-285”不是匹配的我可以帮助您筛选数组中以目标开头的成员 然后可以拆分返回值以达到最终目标 $newTarget = 285-317 $finalTarget = 317 您可以排除与ar
$target
值将不限于3位数字,因此我正在搜索连字符前的数字匹配
所以我想以
$target = 285
$array = array("260-315", "285-317", "240-320")
注意:我只是在搜索连字符前的数字匹配,因此“200-285”不是匹配的我可以帮助您筛选数组中以目标开头的成员 然后可以拆分返回值以达到最终目标
$newTarget = 285-317
$finalTarget = 317
您可以排除与
array\u filter
不匹配的内容,而不是查找匹配的内容
例如:
array (
1 => '285-317',
)
$final
数组将是$original
数组的副本,不包含不匹配的值
要输出第一个数字,您可以在匹配数组中循环,并获得连字符前的值:
$target = 285;
$original = array('260-315', '285-317', '240-320');
$final = array_filter($original, function ($value) use ($target) {
// Check if match starts at first character. Have to use absolute check
// because no match returns false
if (stripos($value, $target) === 0) {
return true;
}
return false;
});
您在评论中问了我什么(在我的答案下面),因此您可以像下面那样(我更改的答案):-
像这样的东西对你有用吗
使用数组过滤器
:
例如:
$target = '260';
$array = ['260-315', '285-317', '240-320'];
$matches = array_filter($array, function($var) use ($target) { return $target === explode('-', $var)[0]; });
print_r($matches);
输出:
<?php
$target = '285';
$array = array('260-315', '285-317', '240-320');
$out = array_filter($array, function($val) use ($target) {
return strpos($val, $target) === 0;
});
var_export($out);
Array
(
[0] => 260-315
)
告诉我们你想出了什么…你知道260-315
(和其他)将被计算为-55
?类似这样的东西:-(但你的数组值必须是字符串,否则它将被自动减去,并显示-55@u_mulder说)似乎在不计算的情况下工作。我应该如何分隔数字?我想知道我们还能挤出多少个array\u filter
答案来回答这个问题。如果其中一个值是200-285呢?连字符前的数字是目标。我的意思是,我试图找到匹配的唯一数字是连字符前的数字。因此,如果目标为285,则200-285不应匹配。
$target = 285;
$array = array("260-315", "285-317", "240-320");
$newTarget = null;
$finalTarget = null;
$filteredArray = array_filter($array, function($val) use ($target) {
return strpos($val, $target."-") === 0;
});
if(isset($filteredArray[0])){
$newTarget = $filteredArray[0];
$finalTarget = explode($filteredArray[0], "-")[1];
}
<?php
$target = 285;
$arrStack = array(
"260-315",
"285-317",
"240-320",
);
$result = preg_grep('/'.$target.'/',$arrStack);
echo "<pre>"; print_r($result); echo "</pre>";
$target = '260';
$array = ['260-315', '285-317', '240-320'];
$matches = array_filter($array, function($var) use ($target) { return $target === explode('-', $var)[0]; });
print_r($matches);
Array
(
[0] => 260-315
)