如何解决尝试使用foreach用php创建动态html元素时出错
当我尝试使用PHP在HTML中动态创建一些框时,出现以下错误:
为foreach()提供的参数无效
这是我的代码:
<?php
$sql = 'call getservers()';
$retval = mysqli_query( $conn,$sql );
if(! $retval ) {
die('Could not get data.');
}
while($row = mysqli_fetch_array($retval)) {
$server_array = $row['result'];
}
foreach($server_array as $value) {
echo <<<HEREDOC
<div class="card card-custom">
<div class="card-header">
<div class="card-title">
<span class="card-icon">
<i class="fas fa-server text-primary text-primary"></i>
</span>
<h3 class="card-label">Server 1
<small>192.168.1.1</small></h3>
</div>
<div class="card-toolbar">
<a href="#" class="btn btn-sm btn-icon btn-light-danger mr-2">
<i class="flaticon2-drop"></i>
</a>
<a href="#" class="btn btn-sm btn-icon btn-light-success mr-2">
<i class="flaticon2-gear"></i>
</a>
<a href="#" class="btn btn-sm btn-icon btn-light-primary">
<i class="flaticon2-bell-2"></i>
</a>
</div>
</div>
<div class="card-body">No Description Given.</div>
</div>
HEREDOC;
}
?>
(MySql查询正确返回JSON数组)
任何帮助将不胜感激。
解决方法
您应该json_decode($server_array,true)
以获取可以循环使用的关联数组。
即
<?php
$server_array = '[{"server_name": "Test Server 1","server_ip": "192.168.1.2","server_hostname": "testserver1.example.com"},{"server_name": "Test Server 2","server_ip": "192.169.1.105","server_hostname": "testserver2.example.com"}]';
$server_array = json_decode($server_array,true);
foreach($server_array as $value) {
foreach($value as $item) {
echo <<<HEREDOC
$item;
HEREDOC;
}
}
输出
Test Server 1; 192.168.1.2; testserver1.example.com; Test Server 2; 192.169.1.105; testserver2.example.com;
工作demo
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。