Php 数组替换不工作

Php 数组替换不工作,php,arrays,Php,Arrays,下面是我的数组,我需要替换'battle\u health' $battlepokemon= array(); $i = 1; while($rows = mysql_fetch_assoc($res)) { $path = mysql_query(" SELECT * FROM pokemons WHERE pk_id = '".$rows['pkmn_id']."' "); $pokemon = array( 'opponent_increment' => $i, 'id' =>

下面是我的数组,我需要替换'battle\u health'

$battlepokemon= array();

$i = 1;
while($rows = mysql_fetch_assoc($res))
{
$path = mysql_query(" SELECT * FROM pokemons WHERE pk_id = '".$rows['pkmn_id']."' ");
$pokemon = array(
'opponent_increment' => $i,
'id' => $rows['pkmn_id'],
'battle_poke'=> mysql_result($path,0,"path"),
'battle_level' => $rows['level'],
'battle_health' => $rows['health']
);
$i++;
$battlepokemon[]= $pokemon;
}
更换代码为:

$i = 1;
foreach ($battlepokemon as $key => $value) 
{
if($value['opponent_increment'] == $opponent_increment)
{
$value['battle_health'] = 0;
echo "Data replaced!";
}
$i++;
}
print_r($battlepokemon);
上面的代码从头到尾都在工作。。但该值并没有如代码所示被“0”替换!
我想我一定错过了什么

您需要传输的是引用,而不是值。在下面的句子中添加一个
&

foreach ($battlepokemon as $key => &$value) 
                                   ^
我只是举个例子

<?php
$arr = array('12', '34');
foreach($arr as $key => &$value){
  $value = 0;
}
var_dump($arr);
?>


希望它能帮助您

您需要传输的是参考,而不是值。在下面的句子中添加一个
&

foreach ($battlepokemon as $key => &$value) 
                                   ^
我只是举个例子

<?php
$arr = array('12', '34');
foreach($arr as $key => &$value){
  $value = 0;
}
var_dump($arr);
?>


希望它能帮助您

您可以通过
for Loop
实现这一点,因为与foreach循环不同,它不会在transversal
之前执行数组复制:

$arr = array('12', '34');
for($i = 0, $count = count($arr); $i < $count; $i++){
    $arr[$i] = 0;
}
var_dump($arr);

您可以使用for循环
来实现这一点,因为与foreach循环不同,它不会在横向
之前执行数组复制:

$arr = array('12', '34');
for($i = 0, $count = count($arr); $i < $count; $i++){
    $arr[$i] = 0;
}
var_dump($arr);

您在php为循环创建的数组的临时副本中进行替换,而不是在原始位置定义$U增量?值是什么?将
foreach($key=>battlepokemon)更改为
foreach($key=>battlepokemon&$value)
替换为php为循环创建的数组的临时副本,而不是定义$u增量的原始位置?值是多少?将
foreach($key=>battlepokemon作为$value)
更改为
foreach($key=>battlepokemon和$value)
被否决,因为您提供的代码效率很低。您可以使用foreach循环,只需强制该值成为引用(在另一个答案中注明)或引用作用域数组变量。您还必须小心使用
for
循环中的
计数。每次迭代都将执行
for
循环的第二个参数。更有效的代码是:
for($i=0,$count=count($arr);$i<$count;$i++)
被否决,因为您提供的代码效率很低。您可以使用foreach循环,只需强制该值成为引用(在另一个答案中注明)或引用作用域数组变量。您还必须小心使用
for
循环中的
计数。每次迭代都将执行
for
循环的第二个参数。更有效的代码是:
for($i=0,$count=count($arr);$i<$count;$i++)