所以我有这个数组列表(出于隐私目的更改了值);
$datalist = array(
1 =>
array(
"12.2.2.2",
"Netherlands 1",
"Hub 1",
"Password",
"Mfalse"
) ,
array(
"12.2.2.2",
"Singapore 1",
"Hub 2",
"Password 2",
"Mfalse"
)
我想要数组2的输出,即'Hub'和'Hub 2'。所以我做了这个php代码,因为我希望将其循环到表中,以便所有详细信息都可以表并组织起来。但是我现在唯一需要的是显示HUB。
foreach ($response->monitors as $monitors) {
if(isset($monitors->id)){
echo
'<tr>
<td><i class="fas fa-globe"></i> '.$monitors->friendly_name.'</td>';
foreach ($datalist as $key => $value) {
# code...
if (isset($key)) {
echo '<td>'.$value[2].'</td>';
}
}
echo '<td>'.$monitors->url.'</td>
<td>'.$monitors->status.'</td>
</tr>';
}
}
因为我还使用其他值输出,并且我想要的数组也在表的另一个foreach循环内。
所以主要问题就在于这部分,因为每当我使用它时,它在表的每个循环上都将这样输出
foreach ($datalist as $key => $value) {
# code...
if (isset($key)) {
echo '<td>'.$value[2].'</td>';
}
}
输出:
Netherlands 1 Hub 1 Hub 2 12.2.2.2
Singapore 1 Hub 1 Hub 2 12.2.2.2
但是我想要的输出是;
Netherlands 1 Hub 1 12.2.2.2
Singapore 1 Hub 2 12.2.2.2
我的foreach数组语句中可能有什么问题?
$ datalist的var_dump
array (
1 =>
array (
0 => 'x',
1 => 'Netherlands 1',
2 => 'PeenoiseSync',
3 => 'x',
4 => 'Mfalse',
),
2 =>
array (
0 => 'x',
1 => 'Singapore 1',
2 => 'PeenoiseSync',
3 => 'x',
4 => 'Mfalse',
),
3 =>
array (
0 => 'x',
1 => 'Singapore 2',
2 => 'PeenoiseSync',
3 => 'x',
4 => 'Mfalse',
),
4 =>
array (
0 => 'x',
1 => 'Singapore 3',
2 => 'PeenoiseSync',
3 => 'x',
4 => 'Mfalse',
),
5 =>
array (
0 => 'x',
1 => 'Singapore 4',
2 => 'PeenoiseSync',
3 => 'x',
4 => 'Mfalse',
),
6 =>
array (
0 => 'x',
1 => 'Singapore 5',
2 => 'PeenoiseSync',
3 => 'x',
4 => 'Mfalse',
),
7 =>
array (
0 => 'x',
1 => 'Singapore 6',
2 => 'PeenoiseSync',
3 => 'x',
4 => 'Mfalse',
),
8 =>
array (
0 => 'x',
1 => 'Singapore 7',
2 => 'YTAC',
3 => 'x',
4 => 'Mfalse',
),
)
答案 0 :(得分:2)
此答案假设您的mapFold
数组与$datalist
数组具有相同的顺序,并且包含相同数量的元素。您只需要跟踪正在使用的监视器,然后使用相同的索引来访问相应的$monitors
行。您可以通过设置$datalist
然后使用as $index=>$monitors
$datalist[$index][2]
答案 1 :(得分:0)
您在密码2后错过了一个“”
$datalist = array(
1 =>
array(
"12.2.2.2",
"Netherlands 1",
"Hub 1",
"Password",
"Mfalse"
) ,
array(
"12.2.2.2",
"Singapore 1",
"Hub 2",
"Password 2",
"Mfalse"
)
);
foreach ($datalist as $key => $value) {
# code...
if (isset($key)) {
echo '<td>'.$value[2].'</td>';
}
}
在这里测试
答案 2 :(得分:0)
您将需要一个变量,以将$ monitors与$ value [1]进行比较,因为每次$ monitors迭代都将输出$ datalist中的所有数组信息,因此,我留下一个示例来说明如何解决此问题,但是在为了进一步帮助您,我将需要知道$ monitors-> friendly_name确切输出的内容以及$ monitors变量中的内容(也许有些事情我们可以用来比较和匹配与正确监视器对应的$ datalist数组:>
foreach ($datalist as $key => $value) {
# code...
if ($monitors->friendly_name == $value[1]) {
echo '<td>'.$value[2].'</td>';
}
假定始终设置$ key(我不认为foreach不会在迭代中设置$ key),这将输出与该特定监视器的正确数组值匹配的值