我目前有一个简单的WHILE
循环,如下所示:
while($los = $result->fetch_row())
{
echo"<tr><td>".$los[0]."</td>";
echo"<td>".$los[1]."</td>";
echo"<td>".$los[2]."</td></tr>";
}
$los
的内容如下:
London => 15 => 32
Glasgow => 23 => 45
Leeds => 1 => 12
Truro => 5 => 23
所有工作正常但我正在努力的是我有第二个数组$outs
,其内容是:
London => 3
Glasgow => 5
Liverpool => 2
Poole => 1
在第一个while
循环中,我尝试在位置名称匹配时从value
减去$outs
的{{1}}。我尝试在while循环中添加以下内容但没有快乐:
$los
但是没有快乐,当我在while循环中尝试if($los[0] == $outs[0]){
$los[1] = $los[1]-$outs[1];
}
时,它返回的全部是:
print_r($outs)
我无法理解我哪里出错或即使这是可能的。 Poole => 1
Poole => 1
Poole => 1
Poole => 1
数组是否在第一个循环中被修改?任何想法,建议或指示都欢迎我如何实现这一目标。
VAR DUMPS
因此,根据要求,两个数组的内容是:
$洛斯
$outs
$出局
London => 15 => 32
Glasgow => 23 => 45
Leeds => 1 => 12
Truro => 5 => 23
然而,当我在London => 3
Glasgow => 5
Liverpool => 2
Poole => 1
内的$outs
时,vldump或print_r的内容是:
while($los = $result->fetch_row())
其他代码
获取Poole => 1
Poole => 1
Poole => 1
Poole => 1
数组的代码是:
$outs
答案 0 :(得分:1)
请考虑发布由var_dump生成的RAW内容,并包含一个完整但最小的脚本来产生错误。
这里不清楚似乎是$outs
是(1)键值数组还是包含子数组的if。(
选项1:
$outs = [
"London" => 3,
"Glasgow" => 5,
"Liverpool" => 2,
"Poole" => 1
];
选项2:
$outs = [
["London", 3],
["Glasgow", 5],
["Liverpool", 2],
["Poole", 1]
];
我做的测试假设您的输入行如下所示:
$citys = [
["London", 15, 32],
["Glasgow", 23, 45],
["Leeds", 1, 12],
["Truro", 5, 23]
];
根据这一点,您可以调整while循环中的if
。
对于选项1 :
foreach ($citys as $los) {
if (array_key_exists($los[0], $outs)) {
$los[1] = $los[1] - $outs[$los[0]];
}
echo " <tr><td > " . $los[0] . "</td > ";
echo "<td > " . $los[1] . "</td > ";
echo "<td > " . $los[2] . "</td ></tr > ";
}
对于选项2 ,它需要更多代码,因为我们需要先在$outs
内搜索cityname索引。在php&gt; 5.5可以使用array_column
来完成,这会更容易。
foreach ($citys as $los) {
$indexInOuts = null;
foreach($outs as $index => $out){
if($los[0] === $out[0]){
$indexInOuts = $index;
break;
}
}
if($indexInOuts !== null){
$los[1] = $los[1] - $outs[$indexInOuts][1];
}
echo " <tr><td > " . $los[0] . "</td > ";
echo "<td > " . $los[1] . "</td > ";
echo "<td > " . $los[2] . "</td ></tr > ";
}
两个选项的输出如下:
London 12 32
Glasgow 18 45
Leeds 1 12
Truro 5 23
正如评论中所说,你每次都要取代$ out。所以编辑它看起来像这样:
$outs = [];
while ($row19 = $result19->fetch_assoc()) {
$outs[] = $row19;
}