我尝试使用$scenario['B']
作为种子数据创建$scenario['C']
和$scenario['A']
。所需的最终数组是:
$scenario['A'] = [ 1, 2, 3, 4, 5, 6, 7, 8];
$scenario['B'] = [101, 102, 103, 104, 105, 106, 107, 108];
$scenario['C'] = [201, 202, 203, 204, 205, 206, 207, 208];
我尝试过以下操作,但收到错误消息:Notice: Undefined variable: value in test.php on line 32
。
$scenario['A'] = range(1, 8);
foreach(['B' => 100, 'C' => 200] as $key => $value):
$scenario[$key] = array_map(function($element) {return $element + $value;}, $scenario['A']);
endforeach;
我尝试将array_map的一部分更改为function($element, $value)
,但会导致不同的错误Warning: Missing argument 2 for...
为什么它看不到$ value?如何对其进行修改以使其有效?
这有效:
$scenario['A'] = range(1, 8);
foreach(['B' => 100, 'C' => 200] as $key => $value):
$constant_array = array_fill(0, sizeof($scenario['A']), $value);
$scenario[$key] = array_map(function($element, $constant) {return $element + $constant;}, $scenario['A'], $constant_array);
endforeach;
Per http://php.net/manual/en/function.array-map.php"回调函数接受的参数数量应与传递给array_map()"的数组数量相匹配。 function($element, $value)
不起作用的原因是因为只有一个数组被传递给array_map()。必须使$ constant_array与种子数组$scenario['A']
的大小相同,以便种子数组中的所有元素都受array_map()的影响。
但我更喜欢@Nigel Ren提供的答案。
答案 0 :(得分:2)
您需要将tree(float f){
// CODE CREATED OBJECT,NO PROBLEM HERE
}
void display()
{
for (int i=216;i>=317;i++) //PROBLEM HERE,FOR LOOP NOT EXECUTED
{
glPushMatrix();
glTranslated(i, 6.8, -5.3);
glScaled(0.2, 0.2, 0.2);
tree(3.5);
glPopMatrix();
}
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
glutInitWindowSize(screenWidth, screenHeight);
glutCreateWindow("Unexpected Adventure");
initRendering();
glutDisplayFunc(display);
glutReshapeFunc(handleResize);
glutIdleFunc(idle);
glutKeyboardFunc(keyboard);
init();
initGL();
glutMainLoop();
}
添加到函数调用中...
use
...给出
$scenario['A'] = range(1, 8);
foreach(['B' => 100, 'C' => 200] as $key => $value):
$scenario[$key] = array_map(function($element) use ($value)
{return $element + $value;}, $scenario['A']);
endforeach;
print_r($scenario['B']);