bry*_*mon 4 php arrays concatenation
我有一个如下所示的循环:
foreach ($header as $i) {
$i += $i;
}
Run Code Online (Sandbox Code Playgroud)
我试图加载一个变量($ i),然后在该循环之外回显该变量,如下所示:
echo $i;
Run Code Online (Sandbox Code Playgroud)
但它总是返回0;
是否有可能让它返回它在循环中创建的值?
Jon*_*nah 12
您可以使用implode()组合所有值.
$all = implode('', $header);
Run Code Online (Sandbox Code Playgroud)
$i 每次循环迭代时重新分配.
在循环外创建一个变量,在循环期间添加它,并在它之外再次回显.
$outside_var = 0;
foreach ($header as $i) {
$outside_var += $i;
}
echo $outside_var;
Run Code Online (Sandbox Code Playgroud)
foreach ($header as $i) {
$i += $i;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码有很多问题。其他答案可以解决这些问题,但只有简单的解释,因此您可能会发现这很有帮助。出于本答案的目的,我将假设$headercontains array('a', 'b', 'c'),并且您的意图是连接这些值。
首先,您使用数字加法运算符+=而不是字符串连接操作.=。这就是为什么$i总是 0:$header每次尝试与 相加时+=, 的值都会转换为整数,假设它们不以数字开头,它们将始终转换为整数0。
其次,如果您连接,则每次循环.=都会分配给,因此其先前的值将被破坏。$i在循环的第一遍中,您实际上正在执行以下操作:
$i = 'a';
$i .= $i' // aa
Run Code Online (Sandbox Code Playgroud)
在第二遍中,您将执行以下操作:
$i = 'b';
$i .= $i; // bb
Run Code Online (Sandbox Code Playgroud)
等等。您需要使用不同的变量来存储数组的每个元素并保存连接的值。否则,当循环存在时,$i将始终是数组的最后一个值,重复。
最后,您应该始终在尝试读取变量之前声明变量,所有简写运算符(+=、.=、*=等)都暗示了这一点。将其包含E_NOTICE在error_reportingphp.ini 中是一个非常好的主意,这样您就会看到此引发的通知。