php 轮询池,PHP数组轮询

$list = array(

"0" => "https://...",

"1" => "http://...",

"2" => "https://...",

"3" => "https://...",

);

/*

* @名称: php ,对数组每隔一定的时间(自设定时间)来轮流进行位置排序,轮询的排行榜。

精确到指定的秒 或 分钟 或 小时 或 天 ,对数据列表进行轮排。

* @参数: (array)$list 顺序数组,传入需要进行轮排的数组;

* @参数: (time string)$polling_time 间隔时间 , 轮排间隔的时间。可以是:数字 + 秒、分、时、天(英文单词);

* @参数: (int)$polling_number 每次轮流换排多少条数据;

* @返回值: array | false , 如果排序成功返回array,否则异常情况返回false.

*

*/

function dataPollingInterval( $list , $polling_time , $polling_number ) {

// 规划轮询间隔时间的参数:

$interval = false;

// 判断$polling_time 的类型是 秒、分、小时、天 中的哪1种。

$arg = array(

's'=>1 , // 秒

'm'=>60 , // 分= 60 sec

'h' =>3600 , // 时= 3600 sec

'd' => 86400 , // 天= 86400 sec

);

// 判断间隔时间的类型,并计算间隔时间

foreach ( $arg as $k => $v ) {

if ( false !== stripos( $polling_time , $k ) ) {

$interval = intval( $polling_time ) * $v;

break;

}

}

// 判断间隔时间

if( !is_int( $interval ) ){

return false;

}

// 从今年开始的秒数

$this_year_begin_second = strtotime( date( 'Y-01-01 01:00:01' , time() ) );

// 当前秒数 - 今年开始的秒数,得到今年到目前为止的秒数。

$polling_time = time() - $this_year_begin_second;

// 从今年到目前为止的秒数,计算得到当前轮数

$len = count( $list ); // 总长度

$start_index = intval( $polling_time / $interval );

$start_index = $polling_number * $start_index % $len; // 轮排数量 * 轮数 , 取余 总数量。

$res = array( );

// 将轮数 指向到数组的索引,然后从这个索引开始接着往下循环遍历。

for ( $i=0; $i < $len ; ++$i ) {

$index = $i + $start_index; // 索引的变化是根据时间来变

// 当遍历索引超过数组的最大下标时,

if ( $index >= $len ) {

$index = $index - $len ;

}

$res[] = $list[ $index ]; // 存入结果

}

return $res;

}

$new_list=dataPollingInterval($list,'3 sec',1);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 若要在 Java 中遍历 JSON 数组,可以使用第三方库如 Gson 或 Jackson。下面是使用 Gson 的示例代码: ```java import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonParser; String jsonString = "[{'name':'John', 'age':30},{'name':'Mike', 'age':25}]"; JsonArray jsonArray = new JsonParser().parse(jsonString).getAsJsonArray(); for (JsonElement jsonElement : jsonArray) { String name = jsonElement.getAsJsonObject().get("name").getAsString(); int age = jsonElement.getAsJsonObject().get("age").getAsInt(); System.out.println("Name: " + name + ", Age: " + age); } ``` 需要注意的是,在上面的示例代码中,我们使用了 Gson 的 JsonParser 和 JsonArray 类来解析 json 字符串。然后使用 for 循环遍历 jsonArray, 并访问其中的元素。 另外,如果使用Jackson库可以使用 ObjectMapper 对象进行转换, ```java import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; String jsonString = "[{'name':'John', 'age':30},{'name':'Mike', 'age':25}]"; ObjectMapper mapper = new ObjectMapper(); JsonNode jsonNode = mapper.readTree(jsonString); for (JsonNode objNode : jsonNode) { String name = objNode.get("name").asText(); int age = objNode.get("age").asInt(); System.out.println("Name: " + name + ", Age: " + age); } ``` 在这个示例中,我们使用了 ObjectMapper 类将 json 字符串转换成 JsonNode 数组。然后使用 for 循环遍历 jsonNode,并访问其中的元素。 ### 回答2: 以下是轮询JSON数组的Java代码示例: ```java import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class JsonArrayPollingExample { public static void main(String[] args) { String jsonArrayStr = "[{\"name\":\"John\",\"age\":30},{\"name\":\"Jane\",\"age\":25},{\"name\":\"Bob\",\"age\":40}]"; try { JSONArray jsonArray = new JSONArray(jsonArrayStr); // 轮询JSON数组中的每个元素 for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonItem = jsonArray.getJSONObject(i); // 获取元素中的属性值 String name = jsonItem.getString("name"); int age = jsonItem.getInt("age"); // 打印元素属性值 System.out.println("Name: " + name); System.out.println("Age: " + age); System.out.println("====================="); } } catch (JSONException e) { e.printStackTrace(); } } } ``` 上述代码使用了JSON库中的JSONArray和JSONObject类来解析JSON数据。通过JSONArray的`getJSONObject`方法获取到每个元素,然后通过JSONObject的`getString`和`getInt`方法获取到元素中的属性值。 在示例中,我们假设要轮询的JSON数组的字符串形式为`"[{\"name\":\"John\",\"age\":30},{\"name\":\"Jane\",\"age\":25},{\"name\":\"Bob\",\"age\":40}]"`。代码解析数组中的每个元素,并打印出每个元素的名称和年龄。 注意,在解析JSON时,可能会出现JSONException异常,所以在代码中我们使用了try-catch块来捕获并处理异常。 请注意,以上代码仅提供了一个示例,实际使用时应根据具体情况进行适当修改。 ### 回答3: 轮询json数组是指通过循环遍历对json数组中的每个元素逐个进行处理的过程。下面是一个用Java代码实现轮询json数组的例子: ```java import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class Main { public static void main(String[] args) { // 假设有一个json数组 String jsonString = "[{\"name\":\"张三\",\"age\":20},{\"name\":\"李四\",\"age\":25},{\"name\":\"王五\",\"age\":30}]"; try { // 将json字符串转换为json数组对象 JSONArray jsonArray = new JSONArray(jsonString); // 遍历json数组中的每个元素 for (int i = 0; i < jsonArray.length(); i++) { // 获取当前元素 JSONObject jsonElement = jsonArray.getJSONObject(i); // 获取当前元素中的name和age属性值 String name = jsonElement.getString("name"); int age = jsonElement.getInt("age"); // 输出当前元素的信息 System.out.println("姓名:" + name); System.out.println("年龄:" + age); System.out.println("---------------------------------"); } } catch (JSONException e) { e.printStackTrace(); } } } ``` 以上代码首先定义了一个包含json数组字符串的变量`jsonString`。然后通过`JSONArray`类将该字符串转换成json数组对象`jsonArray`。 接着,通过循环遍历`jsonArray`,使用`getJSONObject()`方法获取当前元素的json对象`jsonElement`,并通过`getString()`和`getInt()`方法获取当前元素中的name和age属性值。 最后,在循环内部输出当前元素的信息。这样就实现了对json数组进行轮询并处理每个元素的功能。 以上就是一个简单的轮询json数组的Java代码示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值