我目前有这种形式的类方法/函数:
function set_option(&$content,$opt ,$key, $val){
//...Some checking to ensure the necessary keys exist before the assignment goes here.
$content['options'][$key][$opt] = $val;
}
Run Code Online (Sandbox Code Playgroud)
现在,我正在研究修改函数以使第一个参数可选,允许我只传递3个参数.在这种情况下,使用类属性content代替我省略的属性.
首先想到的是将func_num_args()和func_get_args()与此结合使用,例如:
function set_option(){
$args = func_get_args();
if(func_num_args() == 3){
$this->set_option($this->content,$args[0],$args[1],$args[2]);
}else{
//...Some checking to ensure the necessary keys exist before the assignment goes here.
$args[0]['options'][$args[1]][$args[2]] = $args[3];
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能指定我传递第一个参数作为参考?(我使用的是PHP5,因此指定变量通过函数调用的引用传递并不是我最好的选择之一.)
(我知道我可以修改参数列表,以便最后一个参数是可选的,这样做function set_option($opt,$key,$val,&$cont = false),但我很好奇,如果通过引用传递可以与上面的函数定义一起使用.如果它是我宁愿使用它.)
我有这个表单,其中有一个用户可以指定无限数量的值对的部分,特别是语言和熟练程度.
我有这样的DOM结构:
<ul id="language-list">
<li class="user-language-item">
<select name="language[]" class="user-language-select">...</select>
Level: <select name="proficiency[]">...</select>
<input type="button" value="Remove" class="remove-language" />
</li>
<li class="user-language-item">
<select name="language[]" class="user-language-select">...</select>
Level: <select name="proficiency[]">...</select>
<input type="button" value="Remove" class="remove-language" />
</li>
<li class="user-language-item">
<select name="language[]" class="user-language-select">...</select>
Level: <select name="proficiency[]">...</select>
<input type="button" value="Remove" class="remove-language" />
</li>
</ul>
<input type="button" value="Add another language..." id="add-a-language" />
Run Code Online (Sandbox Code Playgroud)
如果用户单击该Add another language...按钮,则应将包含相同表单元素的新列表项插入到列表中.
这是我的代码:
$(function(){
//Save a clone of one list item during initialization.
var liItem = $('.user-language-item').last().clone();
$('#add-a-language').click(function(){
//Append the clone to the …Run Code Online (Sandbox Code Playgroud) 我正在参加C复习并参加棋盘游戏作为练习.棋盘游戏是"将军的游戏"并且非常像国际象棋,因为它使用8x8平方等级的棋子.
基本上,板的实现是特定结构的二维数组.因此,可以通过其索引访问板的正方形,就像xy坐标系一样.
现在我决定随机分配各个部分,逻辑是生成一个随机的xy坐标,检查一块是否已经存在于板上的那些坐标上,如果可用,则用一块填充它.如果不是,则生成另一个随机xy坐标.这种情况一直持续到所有部分都被考虑在内.
我正在使用rand()生成特定范围内的随机数(我使用模运算符和填充数来指定范围.请参阅下面的代码)
但是rand()似乎没有为我提供足够随机的数字.我一遍又一遍地用同样的作品分配!(但有趣的是,我可以在Mac上生成不同的发行版,但发行版仍然一致!)
请参阅下面的代码,了解我如何使用rand()生成带范围的数字.
void initPieces(){
int player, rank_index, population, rand_min, rand_x, rand_y;
for(player = 1; player <= 2; player++){
if(player == 1){
rand_min = 5;
}else{
rand_min = 1;
}
for(rank_index = 0; ir < sizeof ranking/sizeof ranking[0]; rank_index++){
for(population = 0; population < getRank(rank_index)->population; population++){
do{
rand_x = (rand() % 8) + 1;
rand_y = (rand() % 4) + rand_min;
}while((getGrid(rand_x,rand_y))->has_piece == 1);
assignPiecetoGrid(player,rank_index,rand_x,rand_y);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)