相关疑难解决方法(0)

Java是"通过引用传递"还是"传递价值"?

我一直认为Java是传递引用的.

但是,我看过一些博客文章(例如,这个博客)声称它不是.

我不认为我理解他们所做的区别.

解释是什么?

java methods parameter-passing pass-by-reference pass-by-value

6270
推荐指数
80
解决办法
189万
查看次数

227
推荐指数
9
解决办法
15万
查看次数

在数组中获取倒数第二个值

我经常使用以下内容来获取数组中的倒数第二个值:

$z=array_pop(array_slice($array,-2,1));
Run Code Online (Sandbox Code Playgroud)

我错过了一个PHP功能一次性完成或是我最好的吗?

php arrays

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

通过复制值或引用分配php数组?

可能重复:
php中的数组是按值传递还是按引用传递?

我听说PHP可以选择如何分配数组,取决于数组大小.它可以通过复制值(作为任何标量类型)或通过引用进行分配.

PHP总是通过复制值将数组赋值给变量,如手册中所述.

或者它可以通过引用分配.?

<?php $a = array(1,2,3); ?>
Run Code Online (Sandbox Code Playgroud)

php arrays variable-assignment

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

将 JavaScript 函数转换为 PHP

我有一个带有数组输入的 JS 函数。

例如:

x=[ 239709880, 250229420, 109667654, 196414465, 13098]
y=[ 78135241, 54642792, 249]

或者:

x=[ 0, 0, 0, 0, 0, 0, 1 ]
y=[ 78135241, 54642792, 249 ]

或者:

x=[ 49 ]
y=[ 33 ]

function bdiv(x,y) {
    var n=x.length-1, t=y.length-1, nmt=n-t, arr = []
    if(n < t || n==t && (x[n]<y[n] || n>0 && x[n]==y[n] && x[n-1]<y[n-1])) {
        arr['q']=[0]
        arr['mod']=x
        return arr
    }
    if(n==t && toppart(x,t,2)/toppart(y,t,2) <4) {
        var q=0, xx
        for(;;) {
            xx=bsub(x,y)
            if(xx.length==0) break
            x=xx; q++ …
Run Code Online (Sandbox Code Playgroud)

javascript php

7
推荐指数
1
解决办法
751
查看次数

什么时候参考参考危险?

我知道,在foreach中通过引用传递项目可能很危险.

特别是,必须不重用通过引用传递的变量,因为它会影响$array,如下例所示:

$array = ['test'];
foreach ($array as &$item){
    $item = $item;
}
$item = 'modified';
var_dump($array);
Run Code Online (Sandbox Code Playgroud)

array(1){[0] =>&string(8)"modified"}

现在这里咬我:在函数内部修改数组的内容should_not_modify,即使我没有传递$arrayby值.

function should_not_modify($array){
    foreach($array as &$item){
        $item = 'modified';
    }
}
$array = ['test'];
foreach ($array as &$item){
    $item = (string)$item;
}
should_not_modify($array);
var_dump($array);
Run Code Online (Sandbox Code Playgroud)

array(1){[0] =>&string(8)"modified"}

我很想通过我的整个代码库并unset($item);在每个代码库之后插入foreach($array => &$item).

但是,由于这是一项重大任务并且引入了一条可能无用的线路,我想知道是否有一条简单的规则可以知道什么时候foreach($array => &$item)是安全的,而不是unset($item);在它之后,什么时候没有.

编辑以澄清

我想我明白了会发生什么以及为什么.我也知道最好做什么:foreach($array as &$item){...};unset($item);

我知道这是危险的foreach($array as &$item):

  • 重用变量 $item
  • 将数组传递给函数

我的问题是:是否有其他危险的案例,我们是否可以建立一份危险的详尽清单.或者反过来说:是否有可能描述它何时不危险.

php arrays foreach pass-by-reference

6
推荐指数
1
解决办法
156
查看次数

PHP:返回对数组元素的引用

PHP中是否有一种方法可以返回对数组中元素的引用?

function ref(&$array, &$ref) { $ref = $array[1]; }
$array = array(00, 11, 22, 33, 44, 55, 66, 77, 88, 99);
ref($array, $ref);
$ref = 'xxxxxxxxxx';
var_dump($ref);
var_dump($array);
Run Code Online (Sandbox Code Playgroud)

我希望$ array会被更改,如下面的代码所示:

$array = array(00, 11, 22, 33, 44, 55, 66, 77, 88, 99);
$ref = &$array[1];
$ref = 'xxxxxxxxxx';
var_dump($ref);
var_dump($array);
Run Code Online (Sandbox Code Playgroud)

php arrays

4
推荐指数
1
解决办法
6859
查看次数

php:如何按键更新关联数组中的值

我很难尝试更新数组中的值.我做了一个简单的例子来说明这一点:数组包含了玩家的名字和他们拥有的点数.每轮结束后我想更新他们的积分,如下所示:

(这不起作用)

 $players = array (
   array (
   "id"        => 0, 
   "name"      => "John",
   "points"    => 0
   ),

   array (
   "id"        => 1, 
   "name"      => "Chris",
   "points"    => 0
   ),

   array (
   "id"        => 2, 
   "name"      => "Peter",
   "points"    => 0
   ),

   array (
   "id"        => 3, 
   "name"      => "Greg",
   "points"    => 0
   ),

 );


 $points0 = 10;
 $points1 = 20;
 $points2 = 30;
 $points3 = 40;


 $i = 0;
 foreach ($players as $player) {
        if ($player["id"] == $i) { …
Run Code Online (Sandbox Code Playgroud)

php arrays associative-array

3
推荐指数
1
解决办法
4672
查看次数

通过引用或值传递的数组

可能重复:
在c#中默认通过引用传递数组或列表吗?

我在这里读到了一些关于C#的矛盾帖子,以及数组是通过值传递还是通过引用传递的.有人可以澄清C#数组是按值传递还是按引用传递?

谢谢

c# arrays reference

0
推荐指数
1
解决办法
5857
查看次数