小编Dav*_*dom的帖子

PHP'foreach'如何实际工作?

让我通过说我知道它是什么foreach,做什么以及如何使用它来加上前缀.这个问题涉及它如何在发动机罩下工作,我不希望任何答案都是"这就是你如何循环阵列foreach".


很长一段时间,我认为这foreach与数组本身一起工作.然后我发现许多引用它的数据副本的事实,我已经假设这是故事的结尾.但是我最近讨论了这个问题,经过一些实验后发现这实际上并非100%正确.

让我说明我的意思.对于以下测试用例,我们将使用以下数组:

$array = array(1, 2, 3, 4, 5);
Run Code Online (Sandbox Code Playgroud)

测试案例1:

foreach ($array as $item) {
  echo "$item\n";
  $array[] = $item;
}
print_r($array);

/* Output in loop:    1 2 3 4 5
   $array after loop: 1 2 3 4 5 1 2 3 4 5 */
Run Code Online (Sandbox Code Playgroud)

这清楚地表明我们不直接使用源数组 - 否则循环将永远持续,因为我们在循环期间不断地将项目推送到数组.但只是为了确保这种情况:

测试案例2:

foreach ($array as $key => $item) {
  $array[$key + 1] = $item + 2;
  echo "$item\n";
}

print_r($array);

/* Output …
Run Code Online (Sandbox Code Playgroud)

php iteration foreach loops php-internals

1926
推荐指数
7
解决办法
39万
查看次数

调用未定义的函数curl_init().?

当我要实现Authorize.net支付网关时.但是,我收到了这个错误:

调用未定义的函数curl_init()

请让我知道它有什么问题.

php curl

335
推荐指数
3
解决办法
58万
查看次数

"zend_mm_heap corrupted"是什么意思

突然之间,我的应用程序出现了问题,这是我以前从未遇到的问题.我决定检查Apache的错误日志,我发现一条错误消息"zend_mm_heap corrupted".这是什么意思.

操作系统:Fedora Core 8 Apache:2.2.9 PHP:5.2.6

php heap fedora php-internals

123
推荐指数
8
解决办法
16万
查看次数

如何在asp.net mvc中将日期时间值作为URI参数传递?

我需要一个具有日期时间值的动作参数?有没有标准的方法来做到这一点?我需要有类似的东西:

mysite/Controller/Action/21-9-2009 10:20
Run Code Online (Sandbox Code Playgroud)

但我只是成功地用以下东西来代替:

mysite/Controller/Action/200909211020
Run Code Online (Sandbox Code Playgroud)

并编写一个自定义函数来处理这种格式.

再次,寻找一个标准或认可的ASP.net MVC方式来做到这一点.

asp.net-mvc datetime uri

57
推荐指数
5
解决办法
11万
查看次数

为什么PHP属性不允许函数?

我是PHP的新手,但我已经用类似语言编程多年了.我对以下内容感到困惑:

class Foo {
    public $path = array(
        realpath(".")
    );
}
Run Code Online (Sandbox Code Playgroud)

它产生了语法错误:Parse error: syntax error, unexpected '(', expecting ')' in test.php on line 5这是realpath调用.

但这很好用:

$path = array(
    realpath(".")
);
Run Code Online (Sandbox Code Playgroud)

在我的头撞了一会儿之后,我被告知你不能在属性默认情况下调用函数; 你必须这样做__construct.我的问题是:为什么?!这是"功能"还是草率实施?理由是什么?

php language-design php-internals

41
推荐指数
4
解决办法
5431
查看次数

"参数字典包含参数的空条目" - 如何修复?

我正在尝试实现一个编辑页面,以便管理员修改数据库中的数据.不幸的是,我遇到了一个错误.

代码如下:

public ViewResult Edit(int productId) {
       // Do something here 
}
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:

"The parameters dictionary contains a null entry for parameter 'productId' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ViewResult Edit(Int32)' in 'WebUI.Controllers.AdminController'. To make a parameter optional its type should be either a reference type or a Nullable type.
Parameter name: parameters"
Run Code Online (Sandbox Code Playgroud)

我改变了我的路线Global.asax.cs:

 routes.MapRoute(
"Admin",
"Admin/{action}/{ productId}",
new { controller = "Admin", action = "Edit",  productId= "" }
);
Run Code Online (Sandbox Code Playgroud)

但我仍然得到错误.

c# asp.net asp.net-mvc

38
推荐指数
3
解决办法
7万
查看次数

模拟ASP.NET MVC中的User.Identity

我需要为ASP.NET MVC 2.0网站创建单元测试.该站点使用Windows身份验证.

我一直在阅读有必要为处理HttpContext的代码模拟HTTP上下文.我觉得我也开始处理DI模式了.(为类提供类型为IRepository的属性,然后在实例化控制器时传入Repository对象.)

但是,我不明白的是通过User.Identity模拟Windows Principal对象的正确方法.这是HttpContext的一部分吗?

是否有任何正文链接到展示此内容的文章(或推荐书籍)?

谢谢,

特雷卡罗尔

asp.net asp.net-mvc mocking

38
推荐指数
4
解决办法
2万
查看次数

为什么PHP中的无限递归函数会导致段错误?

一个假设的问题,你们都要咀嚼......

我最近在SO上回答了另一个问题,其中一个PHP脚本是segfaulting,它让我想起了我一直想知道的东西,所以让我们看看是否有人可以对它有所了解.

考虑以下:

<?php

  function segfault ($i = 1) {
    echo "$i\n";
    segfault($i + 1);
  }

  segfault();

?>
Run Code Online (Sandbox Code Playgroud)

显然,这个(无用的)函数无限循环.最终,由于每个对函数的调用都是在前一个调用完成之前执行的,因此会耗尽内存.有点像没有分叉的叉形炸弹.

但是......最终,在POSIX平台上,脚本会死于SIGSEGV(它也会死在Windows上,但更优雅 - 只要我极其有限的低级调试技能可以说明).循环次数取决于系统配置(分配给PHP的内存,32位/ 64位等)和操作系统,但我真正的问题是 - 为什么会发生段错误?

  • 这只是PHP处理"内存不足"错误的方式吗?当然必须有更优雅的方式来处理这个问题?
  • 这是Zend引擎中的错误吗?
  • 有没有什么方法可以在PHP脚本中更好地控制或处理它?
  • 是否有任何设置通常控制可以在函数中进行的最大递归调用次数?

php segmentation-fault

31
推荐指数
1
解决办法
6563
查看次数

如何在asp.net mvc中调用html.actionlink中的javascript函数?

如何在asp.net mvc中调用html.actionlink中的javascript函数?

我想调用一个java脚本中的方法,但是如何在同一页面的html.actionlink中调用它,这要事先提前

asp.net asp.net-mvc

30
推荐指数
4
解决办法
13万
查看次数

ASP.NET MVC错误处理 - 删除aspxerrorpath

我在我的MVC应用程序中正在处理一些错误处理,我想改成asperrorpath一些不会泄露我正在使用.NET的事情...类似于path

任何人都可以给我一些方向来改变它吗?

asp.net error-handling asp.net-mvc

27
推荐指数
2
解决办法
2万
查看次数