非常奇怪 PHP 正在用 1 覆盖变量赋值
Very Weird PHP is overwriting variable assignment with 1
有人知道这里发生了什么吗?
让我们以这段非常简单的代码为例:
$p_id = array();
foreach($opp->participants as $party) {
echo "ID value from data:" . var_dump($party->id) . "<br>";
echo "Base array:" . var_dump($p_id) . "<br>";
$p_uuid = array();
$p_assignment_id = array();
$p_id = array_push($p_id, "$party->id");
echo "Dump array result:" .var_dump($p_id) . "<br>";
}
这是我从中得到的输出(是的,这也是输出的格式):
int(295) ID value from data:<br>
array(0) { } Base array:<br>
int(1) Dump array result:<br>
int(298) ID value from data:<br>
array(0) { } Base array:<br>
int(1) Dump array result:<br>
int(301) ID value from data:<br>
array(0) { } Base array:<br>
int(1) Dump array result:<br>
这显然是一个菜鸟问题,但老实说我不知道为什么输出是这样的。
如果我使用 print_r
,这是我得到的结果:
295 ID value from data:1<br>
Array ( ) Base array: 1<br>
1 Dump array result: 1<br>
298 ID value from data:1<br>
Array ( ) Base array: 1<br>
1 Dump array result: 1<br>
301 ID value from data:1<br>
Array ( ) Base array: 1<br>
1 Dump array result: 1<br>
我希望看到的是来自 $party->id
的 ID 值数组,因此 $p_id
的 print_r
的结果应该类似于 Array(295, 298, 301)
。
相反,结果是 1
。不是 array(1)
。就 1
.
为了更清楚,这个引入的数据甚至没有 1
作为 id。所以它甚至不应该存在。
我包含了 print_r
和 var_dump
结果,因此您可以看到原始调试输出。
您不需要将 array_push() 的结果分配给 $p_id。根据 PHP 文档,array_push() 函数的 return 值是数组中元素的新数量,而不是数组本身。 See here
将代码更改为:
array_push($p_id, "$party->id");
应该可以了。
有人知道这里发生了什么吗?
让我们以这段非常简单的代码为例:
$p_id = array();
foreach($opp->participants as $party) {
echo "ID value from data:" . var_dump($party->id) . "<br>";
echo "Base array:" . var_dump($p_id) . "<br>";
$p_uuid = array();
$p_assignment_id = array();
$p_id = array_push($p_id, "$party->id");
echo "Dump array result:" .var_dump($p_id) . "<br>";
}
这是我从中得到的输出(是的,这也是输出的格式):
int(295) ID value from data:<br>
array(0) { } Base array:<br>
int(1) Dump array result:<br>
int(298) ID value from data:<br>
array(0) { } Base array:<br>
int(1) Dump array result:<br>
int(301) ID value from data:<br>
array(0) { } Base array:<br>
int(1) Dump array result:<br>
这显然是一个菜鸟问题,但老实说我不知道为什么输出是这样的。
如果我使用 print_r
,这是我得到的结果:
295 ID value from data:1<br>
Array ( ) Base array: 1<br>
1 Dump array result: 1<br>
298 ID value from data:1<br>
Array ( ) Base array: 1<br>
1 Dump array result: 1<br>
301 ID value from data:1<br>
Array ( ) Base array: 1<br>
1 Dump array result: 1<br>
我希望看到的是来自 $party->id
的 ID 值数组,因此 $p_id
的 print_r
的结果应该类似于 Array(295, 298, 301)
。
相反,结果是 1
。不是 array(1)
。就 1
.
为了更清楚,这个引入的数据甚至没有 1
作为 id。所以它甚至不应该存在。
我包含了 print_r
和 var_dump
结果,因此您可以看到原始调试输出。
您不需要将 array_push() 的结果分配给 $p_id。根据 PHP 文档,array_push() 函数的 return 值是数组中元素的新数量,而不是数组本身。 See here
将代码更改为:
array_push($p_id, "$party->id");
应该可以了。