95 php combol_url()

本文介绍了一种使用PHP处理URL参数的方法,通过explode函数将字符串按特定字符分割,并利用foreach循环遍历数组来构造新的查询字符串。此技巧适用于需要动态生成URL或处理GET请求参数的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

$param  = 'query_view/themeid/taskid';
    $queryarray = explode('/' ,$param ) ;

    foreach( $queryarray as $vo ){
      $querystr = $querystr . "/" . $vo . "/" .$_GET[$vo]; 
    }

当然可以,以下是为 `include.docx` 文件中的代码添加的注释: ```cpp #include "mainwindow.h" #include "ui_mainwindow.h" // 构造函数,初始化主窗口 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), gameSize(0), gameType(0), oneButtonIsSelect(false), touchTimes(0), musicPlayer(new QMediaPlayer) { // 设置音乐播放器的源文件并开始播放 musicPlayer->setSource(QUrl("qrc:/new/prefix1/Deemo.mp3")); musicPlayer->play(); // 清空需要更新的按钮列表 buttonNeedChange.clear(); // 初始化UI ui->setupUi(this); } // 析构函数,释放资源 MainWindow::~MainWindow() { delete ui; } // 更新游戏地图的方法 void MainWindow::updateMap() { for(int i = 0; i < gameSize; i++) { for(int j = 0; j < gameSize; j++) { // 检查按钮类型是否需要更新 if(buttonType[i][j] != gm->get_map(gm->index(i + 1, j + 1))) { buttonType[i][j] = gm->get_map(gm->index(i + 1, j + 1)); buttonNeedChange.push_back(QPoint(i,j)); } } } // 重新绘制界面 this->repaint(); } // 交换两个按钮的位置 void MainWindow::exchange(QPoint b1, QPoint b2) { int i1 = b1.x(), j1 = b1.y(); int i2 = b2.x(), j2 = b2.y(); int tmp = buttonType[i1][j1]; buttonType[i1][j1] = buttonType[i2][j2]; buttonType[i2][j2] = tmp; // 重新绘制界面 this->repaint(); } // 设置按钮的图像 void MainWindow::setButtonImage() { while(!buttonNeedChange.empty()) { QPoint button = buttonNeedChange.first(); buttonNeedChange.pop_front(); int i = button.x(), j = button.y(); QIcon qicon; // 根据按钮类型设置不同的图像和样式 switch(buttonType[i][j]) { case 4: if(gameButtons[i][j]->isChecked()) { gameButtons[i][j]->setStyleSheet("QPushButton{border-image: url(:/new/prefix1/giraffeeStroke.png);}"); } else { gameButtons[i][j]->setStyleSheet("QPushButton{border-image: url(:/new/prefix1/giraffee.png);}" "QPushButton:hover{border-image: url(:/new/prefix1/giraffeeStroke.png);}" "QPushButton:pressed{border-image: url(:/new/prefix1/giraffeeStroke.png);}"); } break; case 1: if(gameButtons[i][j]->isChecked()) { gameButtons[i][j]->setStyleSheet("QPushButton{border-image: url(:/new/prefix1/monkeyyStroke.png);}"); } else { gameButtons[i][j]->setStyleSheet("QPushButton{border-image: url(:/new/prefix1/monkeyy.png);}" "QPushButton:hover{border-image: url(:/new/prefix1/monkeyyStroke.png);}" "QPushButton:pressed{border-image: url(:/new/prefix1/monkeyyStroke.png);}"); } break; case 2: if(gameButtons[i][j]->isChecked()) { gameButtons[i][j]->setStyleSheet("QPushButton{border-image: url(:/new/prefix1/snakeeStroke.png);}"); } else { gameButtons[i][j]->setStyleSheet("QPushButton{border-image: url(:/new/prefix1/snakee.png);}" "QPushButton:hover{border-image: url(:/new/prefix1/snakeeStroke.png);}" "QPushButton:pressed{border-image: url(:/new/prefix1/snakeeStroke.png);}"); } break; case 3: if(gameButtons[i][j]->isChecked()) { gameButtons[i][j]->setStyleSheet("QPushButton{border-image: url(:/new/prefix1/hippopotamussStroke.png);}"); } else { gameButtons[i][j]->setStyleSheet("QPushButton{border-image: url(:/new/prefix1/hippopotamuss.png);}" "QPushButton:hover{border-image: url(:/new/prefix1/hippopotamussStroke.png);}" "QPushButton:pressed{border-image: url(:/new/prefix1/hippopotamussStroke.png);}"); } break; case 5: if(gameButtons[i][j]->isChecked()) { gameButtons[i][j]->setStyleSheet("QPushButton{border-image: url(:/new/prefix1/qieStroke.png);}"); } else { gameButtons[i][j]->setStyleSheet("QPushButton{border-image: url(:/new/prefix1/qie.png);}" "QPushButton:hover{border-image: url(:/new/prefix1/qieStroke.png);}" "QPushButton:pressed{border-image: url(:/new/prefix1/qieStroke.png);}"); } break; case 6: if(gameButtons[i][j]->isChecked()) { gameButtons[i][j]->setStyleSheet("QPushButton{border-image: url(:/new/prefix1/huliStroke.png);}"); } else { gameButtons[i][j]->setStyleSheet("QPushButton{border-image: url(:/new/prefix1/huli.png);}" "QPushButton:hover{border-image: url(:/new/prefix1/huliStroke.png);}" "QPushButton:pressed{border-image: url(:/new/prefix1/huliStroke.png);}"); } break; case -1: gameButtons[i][j]->setStyleSheet("QPushButton{border-image: url(:/new/prefix1/baozha.png);}"); } } } // 绘制事件处理 void MainWindow::paintEvent(QPaintEvent * event) { // 创建绘图对象 QPainter painter(this); QImage image; // 加载背景图片 image.load(":/new/prefix1/timg.jpg"); // 在界面上绘制背景图片 painter.drawImage(QPoint(0, 0), image); // 如果游戏类型为1,绘制按钮图片 if(gameType==1) { int areaLeft, areaRight, areaUp, areaDown; int buttonSize; areaLeft = ui->groupBox->pos().x(); areaUp = ui->groupBox->pos().y() + 65; // 未知原因上方位置不准确 areaRight = areaLeft + 650; areaDown = areaUp + 650; buttonSize = 650/gameSize; setButtonImage(); ui->lcdNumber->display(gm->get_score()); ui->lcdNumber_2->display(gm->combol); ui->lcdNumber_3->display(touchTimes); } } // 开始游戏按钮点击事件 void MainWindow::gameStartButtonClicked() { if(gameType==1) { QMessageBox::information(this, tr("提示"), tr("游戏已经开始!"), QMessageBox::Ok); return; } // 弹出难度选择对话框 int r = QMessageBox::question(this, tr("难度选择"), tr("请选择难度:"), QObject::tr(("简单")), QObject::tr(("普通")), QObject::tr(("困难"))); if(r==0) { gameSize = 7; gm = new game_map(1, 0); touchTimes = 50; } else if(r==1) { gameSize = 10; gm = new game_map(2, 0); touchTimes = 40; } else { gameSize = 15; gm = new game_map(3, 0); touchTimes = 30; } gm->map_creat(); int areaLeft, areaRight, areaUp, areaDown; int buttonSize; areaLeft = ui->groupBox->pos().x(); areaUp = ui->groupBox->pos().y() + 65; // 未知原因上方位置不准确 areaRight = areaLeft + 650; areaDown = areaUp + 650; buttonSize = 650/gameSize; QGridLayout *layout = new QGridLayout; for(int i = 0; i < gameSize; i++) { for(int j = 0; j < gameSize; j++) { buttonType[i][j] = gm->get_map(gm->index(i + 1, j + 1)); QString ss; gameButtons[i][j] = new QPushButton; gameButtons[i][j]->setMinimumSize(buttonSize, buttonSize); gameButtons[i][j]->setMaximumSize(buttonSize, buttonSize); gameButtons[i][j]->setFlat(true); gameButtons[i][j]->setCheckable(true); layout->addWidget(gameButtons[i][j], i, j); if(i<10) { ss += '0'; ss += '0' + QChar(i); } else { ss += '0' + QChar(i/10); ss += '0' + QChar(i%10); } if(j<10) { ss = '0'; ss = '0' + QChar(j); } else { ss = '0' + QChar(j/10); ss = '0' + QChar(j%10); } ss[4] = '\0'; gameButtons[i][j]->setObjectName(ss); connect(gameButtons[i][j], SIGNAL(clicked()), this, SLOT(gameButtonClicked())); buttonNeedChange.push_back(QPoint(i,j)); } } ui->groupBox->setLayout(layout); gameType = 1; } // 停止游戏按钮点击事件 void MainWindow::gameStopButtonClicked() { this->close(); } // 游戏帮助按钮点击事件 void MainWindow::gameHelpButtonClicked() { QMessageBox::about(this, tr("游戏规则"), tr("\t游戏难度分为1,2,3级三个难度,分别对应7*7,10*10,15*15的矩阵。1级难度需要在50步内对四种图形进行消除以积累得分,2级难度需要在40步内对五种图形进行消除以积累的分,3级难度需要在30步内对六种图形进行消除以累计得分。\n\t游戏设置了连击数,对于每次填充后若无交换操作仍可消除将产生连击数,连击数越高得分加成越高哦!\n\t排行榜可以记录游戏中同等难度最高的五次得分,加油获得更高的分数去冲击自己的排行吧!")); } // 排行榜按钮点击事件 void MainWindow::gameListButtonClicked() { int r = QMessageBox::question(this, tr("排行榜"), tr("请选择难度:"), QObject::tr(("简单")), QObject::tr(("普通")), QObject::tr(("困难"))); gm->get_data(r); QMessageBox::about(this, tr("排行榜"), tr("").asprintf("\t\t排行榜\n\t1、\t%d\n\t2、\t%d\n\t3、\t%d\n\t4、\t%d\n\t5、\t%d\n",gm->get_v(0),gm->get_v(1),gm->get_v(2),gm->get_v(3),gm->get_v(4))); } // 游戏按钮点击事件 void MainWindow::gameButtonClicked() { QObject *object = QObject::sender(); QPushButton *push_button = qobject_cast<QPushButton *>(object); QString object_name = push_button->objectName(); QByteArray ssp = object_name.toLatin1(); char* sp = ssp.data(); int ii, jj; ii = (sp[0] - '0')*10 + (sp[1] - '0'); jj = (sp[2] - '0')*10 + (sp[3] - '0'); buttonNeedChange.push_back(QPoint(ii,jj)); this->repaint(); if(!gm->continue_game_judge()) { gm->map_creat(); gameButtons[ii][jj]->setChecked(false); for(int i = 0; i < gameSize; i++) { for(int j = 0; j < gameSize; j++) { buttonType[i][j] = gm->get_map(gm->index(i + 1, j + 1)); buttonNeedChange.push_back(QPoint(i,j)); } } return; } if(oneButtonIsSelect==false) { oneButtonIsSelect = true; selectedButton.setX(ii); selectedButton.setY(jj); } else { gameButtons[selectedButton.x()][selectedButton.y()]->setChecked(false); gameButtons[ii][jj]->setChecked(false); if((abs(selectedButton.x()-ii)==1&&(selectedButton.y()==jj))||(abs(selectedButton.y()-jj)==1&&(selectedButton.x()==ii))) { qDebug() << tr("交换两点"); oneButtonIsSelect = false; buttonNeedChange.push_back(QPoint(selectedButton.x(),selectedButton.y())); buttonNeedChange.push_back(QPoint(ii,jj)); exchange(selectedButton, QPoint(ii, jj)); sleep(300); if(!gm->change_judge(ii + 1, jj + 1, selectedButton.x() + 1, selectedButton.y() + 1)) { qDebug() << tr("换回两点"); buttonNeedChange.push_back(QPoint(selectedButton.x(),selectedButton.y())); buttonNeedChange.push_back(QPoint(ii,jj)); exchange(selectedButton, QPoint(ii, jj)); } else { qDebug() << tr("开始消除"); touchTimes--; gm->combol = 1; do { qDebug() << tr("消除第") << gm->combol << tr("次"); updateMap(); sleep(300); gm->block_fill(); updateMap(); sleep(300); } while(gm->all_check_destroy(gm->combol++)); gm->combol--; } } else { oneButtonIsSelect = false; } qDebug() << '\n'; } if(!touchTimes) { QMessageBox::information(this, tr("提示"), tr("").asprintf("交换次数用尽,游戏结束!\n\t你的分数是%d", gm->get_score()), QMessageBox::Ok); gm->fill_operator(); gameStopButtonClicked(); } } // 开始游戏菜单项触发事件 void MainWindow::on_actionstartt_triggered() { gameStartButtonClicked(); } // 开始游戏按钮点击事件 void MainWindow::on_pushButton_clicked() { gameStartButtonClicked(); } // 停止游戏按钮点击事件 void MainWindow::on_pushButton_2_clicked() { gameStopButtonClicked(); } // 游戏帮助菜单项触发事件 void MainWindow::on_actionhelpp_triggered() { gameHelpButtonClicked(); } // 游戏帮助按钮点击事件 void MainWindow::on_pushButton_3_clicked() { gameHelpButtonClicked(); } // 播放音乐菜单项触发事件 void MainWindow::on_actionmusicc_triggered() { musicPlayer->play(); } // 停止音乐菜单项触发事件 void MainWindow::on_actiongratMusicc_triggered() { musicPlayer->stop(); } // 排行榜按钮点击事件 void MainWindow::on_pushButton_4_clicked() { gameListButtonClicked(); } // 排行榜菜单项触发事件 void MainWindow::on_actionlistt_triggered() { gameListButtonClicked(); } ``` 希望这些注释能帮助你更好地理解代码的功能和逻辑。如果有任何进一步的问题或需要更详细的解释,请随时告诉我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值