具有两个数组和 if 条件的 Foreach 循环
Foreach loop with two arrays and if-condition
我有这个数组(部分)来自外部 API 来源:
[wow_accounts] => Array
(
[0] => Array
(
[id] => 4426107
[characters] => Array
(
[0] => Array
[name] => Name1
[id] => 48889376
[realm] => Array
(
[key] => Array
(
[href] => https:/XX
)
[name] => Malygos
[id] => 1098
[slug] => malygos
)
)
我也有这个mysqltable.
我在 foreach 循环中有两个数组和一个“if 条件”,但我没有得到输出。 mysql 连接已启动。可能是foreach循环或者if条件出错了。
我尝试了以下方法:
$connection = mysqli_connect("localhost", "xx", "xx", "xx") or die("Error " . mysqli_error());
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$sql = mysqli_query($connection, "SELECT * FROM mysqltable");
while($row = mysqli_fetch_array($sql)) {
$names[] = $row['firstname'];
}
$data2 = //Link tothe APi
echo '<table class="formatHTML5" id="myTable">';
foreach($data2['wow_accounts']['0']['characters'] as $key => $item && $names as $name) {
if($name["firstname"] == $item['name'] && $name["lastname"] == $item['realm']['name'] ) {
$class_string = '';
} else {
$class_string = ' class="my-additional-class"';
}
echo '<tr'.$class_string.'>';
echo '<td>';
echo $item['name'];
echo '</td>';
echo '<td>';
echo $item['realm']['name'];
echo '</td>';
echo '<td>';
echo '<button class="btnSelect">Select</button>';
echo '</td>';
echo '</tr>';
}
echo '</table>';
}
}
尝试显示所有错误将其添加到 <?php
标签下
<?php
`ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);`
$connection = mysqli_connect("localhost", "xx", "xx", "xx") or die("Error " . mysqli_error());
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$sql = mysqli_query($connection, "SELECT * FROM mysqltable");
while ($row = mysqli_fetch_array($sql,MYSQLI_ASSOC)) {
$names[] = $row['firstname'];
}
$data2 = "";//Link tothe APi
echo '<table class="formatHTML5" id="myTable">';
foreach ($data2['wow_accounts']['0']['characters'] as $key => $item) {
if ($names["firstname"] === $item['name'] && $names["lastname"] === $item['realm']['name']) {
$class_string = '';
} else {
$class_string = ' class="my-additional-class"';
}
echo '<tr' . $class_string . '>';
echo '<td>';
echo $item['name'];
echo '</td>';
echo '<td>';
echo $item['realm']['name'];
echo '</td>';
echo '<td>';
echo '<button class="btnSelect">Select</button>';
echo '</td>';
echo '</tr>';
}
echo '</table>';
}
您需要使用嵌套循环来检查 API 中的字符是否在 table 中。您必须遍历整个 $names
数组以判断名称是否在 table.
中
您还需要将 firstname
和 lastname
都放在 $names
数组中,而不仅仅是 firstname
。只需将整个 $row
放入数组即可。
$sql = mysqli_query($connection, "SELECT firstname, lastname FROM mysqltable");
while($row = mysqli_fetch_array($sql)) {
$names[] = $row;
}
//...
foreach($data2['wow_accounts']['0']['characters'] as $character) {
$found = false;
foreach ($names as $name) {
if ($character['name'] == $name['firstname'] && $character['realm']['name'] == $name['lastname']) {
$found = true;
break;
}
}
$class_string = $found ? '' : ' class="my-additional-class"';
//...
}
我有这个数组(部分)来自外部 API 来源:
[wow_accounts] => Array
(
[0] => Array
(
[id] => 4426107
[characters] => Array
(
[0] => Array
[name] => Name1
[id] => 48889376
[realm] => Array
(
[key] => Array
(
[href] => https:/XX
)
[name] => Malygos
[id] => 1098
[slug] => malygos
)
)
我也有这个mysqltable.
我在 foreach 循环中有两个数组和一个“if 条件”,但我没有得到输出。 mysql 连接已启动。可能是foreach循环或者if条件出错了。
我尝试了以下方法:
$connection = mysqli_connect("localhost", "xx", "xx", "xx") or die("Error " . mysqli_error());
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$sql = mysqli_query($connection, "SELECT * FROM mysqltable");
while($row = mysqli_fetch_array($sql)) {
$names[] = $row['firstname'];
}
$data2 = //Link tothe APi
echo '<table class="formatHTML5" id="myTable">';
foreach($data2['wow_accounts']['0']['characters'] as $key => $item && $names as $name) {
if($name["firstname"] == $item['name'] && $name["lastname"] == $item['realm']['name'] ) {
$class_string = '';
} else {
$class_string = ' class="my-additional-class"';
}
echo '<tr'.$class_string.'>';
echo '<td>';
echo $item['name'];
echo '</td>';
echo '<td>';
echo $item['realm']['name'];
echo '</td>';
echo '<td>';
echo '<button class="btnSelect">Select</button>';
echo '</td>';
echo '</tr>';
}
echo '</table>';
}
}
尝试显示所有错误将其添加到 <?php
标签下
<?php
`ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);`
$connection = mysqli_connect("localhost", "xx", "xx", "xx") or die("Error " . mysqli_error());
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$sql = mysqli_query($connection, "SELECT * FROM mysqltable");
while ($row = mysqli_fetch_array($sql,MYSQLI_ASSOC)) {
$names[] = $row['firstname'];
}
$data2 = "";//Link tothe APi
echo '<table class="formatHTML5" id="myTable">';
foreach ($data2['wow_accounts']['0']['characters'] as $key => $item) {
if ($names["firstname"] === $item['name'] && $names["lastname"] === $item['realm']['name']) {
$class_string = '';
} else {
$class_string = ' class="my-additional-class"';
}
echo '<tr' . $class_string . '>';
echo '<td>';
echo $item['name'];
echo '</td>';
echo '<td>';
echo $item['realm']['name'];
echo '</td>';
echo '<td>';
echo '<button class="btnSelect">Select</button>';
echo '</td>';
echo '</tr>';
}
echo '</table>';
}
您需要使用嵌套循环来检查 API 中的字符是否在 table 中。您必须遍历整个 $names
数组以判断名称是否在 table.
您还需要将 firstname
和 lastname
都放在 $names
数组中,而不仅仅是 firstname
。只需将整个 $row
放入数组即可。
$sql = mysqli_query($connection, "SELECT firstname, lastname FROM mysqltable");
while($row = mysqli_fetch_array($sql)) {
$names[] = $row;
}
//...
foreach($data2['wow_accounts']['0']['characters'] as $character) {
$found = false;
foreach ($names as $name) {
if ($character['name'] == $name['firstname'] && $character['realm']['name'] == $name['lastname']) {
$found = true;
break;
}
}
$class_string = $found ? '' : ' class="my-additional-class"';
//...
}