$target = 285
$array = array("260-315", "285-317", "240-320")
$ target値で始まる値の配列を検索する必要があります。また、$target
の値は3桁に限定されないので、ハイフンの前に数字の一致を探しています。配列内の一致する部分値を検索する
は、だから私は
$newTarget = 285-317
$finalTarget = 317
ノートで終わるしたい:「200から285」のマッチ
$target = 285
$array = array("260-315", "285-317", "240-320")
$ target値で始まる値の配列を検索する必要があります。また、$target
の値は3桁に限定されないので、ハイフンの前に数字の一致を探しています。配列内の一致する部分値を検索する
は、だから私は
$newTarget = 285-317
$finalTarget = 317
ノートで終わるしたい:「200から285」のマッチ
下記(私の変更の答え)のようにそれを行うことができます: -
<?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];
}
}
?>
値のいずれかが200-285の場合はどうなりますか?ハイフンの前の数字がターゲットです。 – user300979
私が意味するのは、一致するものを見つけようとする唯一の数字は、ハイフンの前の数字です。ターゲットが285の場合、200-285は一致しないはずです。 – user300979
@ user300979編集した回答を確認する –
私ではないので、私は唯一のハイフンの前の数字の一致を探していますターゲットから始まるメンバーにアレイを絞り込むのに役立ちます。
次に、戻り値を分割して最終ターゲットに到達させることができます。
<?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',
)
うわー、基本的に同じ時間。グレート答え;) –
の代わりにあなたが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];
}
}
このようなものがあなたのために働くことができますか? 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];
}
<?php
$target = 285;
$arrStack = array(
"260-315",
"285-317",
"240-320",
);
$result = preg_grep('/'.$target.'/',$arrStack);
echo "<pre>"; print_r($result); echo "</pre>";
使用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
)
は、あなたが思い付いた私たちを表示... – Furgas
あなたが知っている 'その260-315'(およびその他s)は '-55'と計算されますか? –
このようなもの:-https://eval.in/702826(ただし配列の値は文字列でなければなりません。そうでないと自動的に減算され、-55 @u_mulderと表示されます) –