[英]Foreach doesn't work in php
我有这样的代码:
<?php
$kode ["J"]= array (20, C, D, F);
$kode ["K"]= array (50, B, G, U);
$kode ["T"]= array (70, V, W);
function kota ($start, $end){
if (is_array($kode)) {
foreach ($kode as $kota => $path){
if ($kota=$end) {
for ($i=1; $i < count ($kota); $i++){
$jalur=$start.$path[$i];
}
}
}
return $jalur;
}
}
$start = "J";
$end = "T";
$hasil=kota ($start, $end);
echo "".$hasil;
?>
我希望输出为JVW
我不知道怎么了,有人可以帮我吗? 请...
看起来您忘记了使用等号运算符==
if ($kota = $end){ ... }
应该 -
if ($kota == $end){ ... }
通过仅使用一个等号,您实际上是在为$kota
分配一个值,而不是像在条件表达式中那样将其与$end
进行比较 。
我不认为这是唯一在这里引起麻烦的事情。但是绝对应该对它进行梳理:)
我在代码中注意到的另一件事是,您引用的是kota
函数中未在其作用域中定义的变量。 这意味着在kota
函数中无法访问$kota
数组。 您应该将$kota
数组传递给函数,以便可以在函数范围内使用它。 这是有关PHP中变量作用域的更多信息 。
关于变量名选择的最后一点...您可能应该考虑更改变量$kota
或函数kota
以使它们的名称不同。 这将有助于提高可读性,并可能在整夜调试时防止凌晨4点出现一些错误;)
在线上
if ($kota=$end){
您不是在进行比较,而是覆盖$ kota中的值,这始终是正确的。
同样, $kode
在功能范围中不可用,请尝试将其添加到参数列表中,或使用global
(不建议使用)。
您需要将$kode
作为参数传递给函数,或者调用global $kode;
内部功能。 我建议前者。
另外, if ($kota=$end)
需要成为if ($kota==$end)
就像其他人提到的那样。
不确定$jalur=$start;
在正确的位置,但是此脚本提供了您想要的:
<?php
$kode ["J"]= array (20, 'C', 'D', 'F');
$kode ["K"]= array (50, 'B', 'G', 'U');
$kode ["T"]= array (70, 'V', 'W');
function kota ($start, $end){
global $kode;
if(is_array($kode)){
foreach ($kode as $kota => $path){
if ($kota == $end){
$jalur=$start;
for ($i=1; $i < count ($path); $i++){
$jalur .= "-" . $path[$i];
}
}
}
return $jalur;
}
}
$start = "J";
$end = "T";
$hasil=kota ($start, $end);
echo $hasil;
?>
您的代码有很多问题
正如其他人指出的那样,在if ($kota=$end) {
,您将$end
分配给$kota
并始终返回true
即IF子句中的代码始终执行
PHP具有功能范围。 简而言之,在函数内部声明的变量不能在外部使用,反之亦然。 使用参数将$kode
传递给函数。
使用裸字符串,即$kode ["T"]= array (70, V, W);
V
和W
$kode ["T"]= array (70, V, W);
和其他地方。 强烈建议您这样做,PHP会对此发出警告。
正如其他指出的那样, $jalur=$start.$path[$i];
每次都会覆盖$jalur
。 外部的for循环是没有意义的。 您将使用.=
附加操作符。 请注意,在使用此运算符之前,您还需要初始化变量。
$kota
始终是代码中的字符串,因为在foreach
循环中, =>
符号前的变量表示获取数组的键,并且数组键只能是String或整数。 就是说, for ($i=1; $i < count ($kota); $i++){
是没有意义的,因为count($kota)
不能大于1-for循环实际上永远不会运行。
像在echo "".$hasil;
那样,在变量后附加一个空字符串是毫无意义的echo "".$hasil;
我想这就是你想要的。
<?php
$kode ["J"] = array (20, 'C', 'D', 'F');
$kode ["K"] = array (50, 'B', 'G', 'U');
$kode ["T"] = array (70, 'V', 'W');
function kota ($kode, $start, $end){
$jalur = $start;
if (is_array($kode)) {
foreach ($kode as $kota => $path){
if ($kota == $end) {
for ($i = 1; $i < count($path); ++$i) {
$jalur .= '-' . $path[$i];
}
}
}
return $jalur;
}
}
$start = "J";
$end = "T";
$hasil = kota($kode, $start, $end);
echo $hasil;
?>
此代码为您提供以$start
开头的字符串以及$kode[$end]
第一个元素以外的所有其他元素
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.