我有一个多维数组:
$data= "Array (
[0] => 1520155838|1234|2000|Name1|COMPLETE|2|18|1
[1] => 1520156051|1234|2000|Name2|COMPLETE|20|3|1
[2] => 1520165693|1234|2000|Name3|COMPLETE|3|15|1
[3] => 1520166218|1234|2000|Name4|COMPLETE|26|71|1
[4] => 1522128854|1234|2000|Name5|COMPLETE|77|121|1
[5] => 1522129106|1234|2000|Name6|COMPLETE|221|244|1
)";
我需要搜索并返回时间戳范围内的密钥" 1520155840"和" 1520165699"例如。
我把它爆炸了:
$Data_Array=[];
for ($x = 0; $x < sizeof($data); $x++) {
array_push($Data_Array, explode("|",$data[$x]));
}
任何想法?
答案 0 :(得分:1)
假设给定的是数组而不是字符串。
您可以使用array_filter
在给定范围之间过滤数组。这将保留原始数组的键
$data= array(
"1520155838|1234|2000|Name1|COMPLETE|2|18|1",
"1520156051|1234|2000|Name2|COMPLETE|20|3|1",
"1520165693|1234|2000|Name3|COMPLETE|3|15|1",
"1520166218|1234|2000|Name4|COMPLETE|26|71|1",
"1522128854|1234|2000|Name5|COMPLETE|77|121|1",
"1522129106|1234|2000|Name6|COMPLETE|221|244|1",
);
$fr = "1520155840";
$to = "1520165699";
$result = array_filter($data, function($v) use($fr, $to){
$v = explode("|",$v);
return $fr <= $v[0] && $to >= $v[0];
});
echo "<pre>";
print_r( $result );
echo "</pre>";
这将导致:
Array
(
[1] => 1520156051|1234|2000|Name2|COMPLETE|20|3|1
[2] => 1520165693|1234|2000|Name3|COMPLETE|3|15|1
)