$target = 285
$array = array("260-315", "285-317", "240-320")
我需要在数组中搜索以$ target值开头的值。此外,$target
值不会限制为3位数,因此我会在连字符之前搜索数字的匹配。
所以我想以
结束$newTarget = 285-317
$finalTarget = 317
注意:我只是在连字符之前搜索数字的匹配,所以" 200-285"不会是一场比赛
答案 0 :(得分:1)
你在评论中提到了我(在我的回答下面),因为你可以像下面那样(我的答案更改): -
<?php
$target = 285;
$array = array('260-315', '285-317', '240-320',"200-285");
foreach($array as $key=>$value){
if($target ==explode('-',$value)[0]){
echo $newTarget = $array[$key];
echo PHP_EOL;
echo $finalTarget = explode('-',$array[$key])[1];
}
}
?>
答案 1 :(得分:0)
我可以帮助您将阵列过滤到以目标开头的成员。
然后,您可以拆分返回值以获得最终目标。
<?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 (
1 => '285-317',
)
答案 2 :(得分:0)
您可以排除与array_filter
不匹配的内容,而不是查找匹配内容。
例如:
$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;
});
$final
数组将是$original
数组的副本,而不包含不匹配的值。
要输出第一个数字,您可以遍历您的匹配数组并获取连字符前的值:
foreach ($final as $match) {
$parts = explode('-', $match);
if (is_array($parts) && ! empty($parts[0])) {
// Show or do something with value
echo $parts[0];
}
}
答案 3 :(得分:0)
这样的事可能对你有用吗? array_filter
$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];
}
答案 4 :(得分:0)
<?php
$target = 285;
$arrStack = array(
"260-315",
"285-317",
"240-320",
);
$result = preg_grep('/'.$target.'/',$arrStack);
echo "<pre>"; print_r($result); echo "</pre>";
答案 5 :(得分:0)
使用array_filter
:
示例:
$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
)