PHP中如何过滤数组并从API提取AIRTEL套餐生成下拉选项?
提取AIRTEL套餐并生成Select Option选项
需求说明:从指定GET API提取AIRTEL DATA PLAN的dataPlan、duration、type、status以及basic_user对应的Price字段,转换为HTML的select Option格式。
以下是修改完成的PHP代码,已实现需求:
<?php $url = "https://subandgain.com/api/databundles.php"; $curl = curl_init($url); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // 添加超时设置,避免请求长时间挂起 curl_setopt($curl, CURLOPT_TIMEOUT, 10); $response = curl_exec($curl); // 检查curl请求是否成功 if(curl_errno($curl)){ die("请求失败: " . curl_error($curl)); } curl_close($curl); $obj = json_decode($response, true); // 存储提取后的AIRTEL套餐数据 $airtelPlans = []; foreach ($obj as $resource){ if ($resource['NETWORK'] === 'AIRTEL'){ // 安全提取basic_user对应的Price字段,避免字段不存在报错 $price = isset($resource['basic_user']['Price']) ? $resource['basic_user']['Price'] : 'N/A'; $airtelPlans[] = [ 'dataPlan' => $resource['dataPlan'], 'duration' => $resource['duration'], 'type' => $resource['type'], 'status' => $resource['status'], 'price' => $price ]; } } // 生成HTML Select Option标签 $selectOptions = '<option value="">请选择AIRTEL套餐</option>'; foreach ($airtelPlans as $plan){ // 拼接用户友好的显示文本 $displayText = "{$plan['dataPlan']} ({$plan['duration']}) - ₦{$plan['price']}"; // 通过data-*属性存储额外字段,方便前端后续调用 $selectOptions .= "<option value=\"{$plan['dataPlan']}\" data-duration=\"{$plan['duration']}\" data-type=\"{$plan['type']}\" data-status=\"{$plan['status']}\" data-price=\"{$plan['price']}\"> {$displayText} </option>"; } // 输出完整的select控件,若只需要Option字符串可去掉外层select标签 echo '<select id="airtel-data-plans">' . $selectOptions . '</select>'; ?>
关键说明
- 请求容错:添加了curl错误检测和超时设置,避免请求异常导致程序崩溃。
- 字段安全提取:使用
isset()判断basic_user->Price字段是否存在,防止因API返回结构变动引发报错。 - Option扩展:除了生成基础的Option选项,还通过
data-*属性存储了duration、type等额外字段,便于前端获取更多套餐信息。 - 灵活调整:可根据需求修改
value值(比如改为价格或者唯一标识),或调整显示文本的格式。
内容的提问来源于stack exchange,提问作者Clubz Friendship
相关产品推荐
相关产品推荐

