假设我有一个如下所示的数组。
[0] => Array
[0] => Peter drives 45km to work
[1] => Tom rides 32km with his friends
[2] => Lisa walks 6km to the gym
[3] => Bob cycles 12km to keep fit
[4] => Bill takes the train 63km to work
[5] => Penny runs 8km to the shop
[6] => Robert takes a taxi 21km to the museum
假设我想只保留行走10-15公里的人并从阵列中移除所有其他人。另外,假设我想要使用的范围是可变的,即:今天我可能想看看谁在10-15公里之间旅行,但明天我可能想看看谁在5-15公里之间旅行,然后第二天我可能希望看到谁走了30-50公里。
我将如何搜索此数组并删除所有不在我指定范围内的元素,或将我需要的元素移动到新数组?
关于我需要的元素,我需要保留整个值,而不仅仅是行进的距离。
答案 0 :(得分:2)
您可以将php的数组过滤器函数与使用正则表达式从字符串中提取相关数字的回调结合使用:
<?php
$min = 10;
$max = 20;
$input = [
"Peter drives 45km to work",
"om rides 32km with his friends",
"Lisa walks 6km to the gym",
"Bob cycles 12km to keep fit",
"Bill takes the train 63km to work",
"Penny runs 8km to the shop",
"Robert takes a taxi 21km to the museum",
];
$output = array_filter($input, function($string) use ($min, $max) {
preg_match('/([0-9]+)km/', $string, $matches);
$number = intval($matches[1]);
return ($number>$min) && ($number<$max);
});
print_r($output);
此示例的输出(包含$min
和$max
的给定值)是:
Array
(
[3] => Bob cycles 12km to keep fit
)
不同的方法是可能的,在这里我使用&#34;闭合&#34;保持紧凑。显然,$min
和$max
中的值是您想要以动态方式定义的值。如果输入字符串具有意外格式,则应在回调函数内添加一些错误处理。我把它留在这里是为了让事情再次紧凑......
答案 1 :(得分:0)
如果您从阵列中删除任何项目。
<script>
var scelta1;
var temp=0;
var image = new Array(6);
image[0]= 'images/dado1.gif';
image[1]= 'images/dado2.gif';
image[2]= 'images/dado3.gif';
image[3]= 'images/dado4.gif';
image[4]= 'images/dado5.gif';
image[5]= 'images/dado6.gif';
function lancio(){
temp = Math.floor((Math.random() * 6));
if(temp == 0){
document.getElementById("scelta1").src = image[0];
document.getElementById("alt1").value = temp;
return scelta1;
}
else if(temp == 1){
document.getElementById("scelta1").src = image[1];
document.getElementById("alt1").value = temp;
return scelta1;
}
else if(temp == 2){
document.getElementById("scelta1").src = image[2];
document.getElementById("alt1").value = temp;
return scelta1;
}
else if(temp == 3){
document.getElementById("scelta1").src = image[3];
document.getElementById("alt1").value = temp;
return scelta1;
}
else if(temp == 4){
document.getElementById("scelta1").src = image[4];
document.getElementById("alt1").value = temp;
return scelta1;
}
else if(temp == 5){
document.getElementById("scelta1").src = image[5];
document.getElementById("alt1").value = temp;
return scelta1;
}
}
}
</script>
$ a是包含数组的变量。