我的多维数组无法获得任何输出。我试图使用push_array方法获取数据。
我想将输出设为:
但是,我没有得到任何输出。我知道数组正在工作,因为当我回显$ message并且在输出foreach数组中不使用$ id和$ name时,我得到以下输出。
当前输出:(当回显$ message时)
但是当我使用$ id和$ name时,没有显示任何内容。
<ul class="result"><?php
foreach ($output as $message) {
$id = $message[1][0];
$name = $message[1][1];
?><li>
<a href="handleDownload.php?id=<?php echo $id;?>"><?php echo $name; ?> </a>
</li><php } ?>
</ul>
这是我的完整代码:
<?php
$Download = new Download();
$result = array(); //store results of upload
try {
$Download->showDBFiles();
$output = $Download->getMessages();
} catch (Exception $e) {
$result[] = $e->getMessage();
}
?>
<h2>Output</h2>
<?php if ($output) { ?>
<ul class="result">
<?php foreach ($output as $message) {
$id = $message[1][0];
$name = $message[1][1];
?>
<li><a href="handleDownload.php?id=<?php echo $id;?>"><?php echo $name; ?></a></li>
<?php } ?>
</ul>
<?php } ?>
定义数组的函数
protected $messages = array();
public function showDBFiles() {
global $database;
$values=array();
$sql = "SELECT resume_id, resume_title FROM ".self::$table_name;
$result = $database->query($sql);
if(mysqli_num_rows($result)==0){
$this->messages[] = "Database is empty";
}else{
while(list($id, $name) = mysqli_fetch_array($result)){
array_push($this->messages, array($id, $name));
}
}
}
public function getMessages()
{
return $this->messages;
}
更新: 在使用jedrzej.kurylo的建议后,我能够获得$ id和$ name值,如我的var_dump输出所示:
array(4){[0] =&gt; array(2){[0] =&gt;字符串(2)&#34; 73&#34; [1] =&GT; string(2)&#34; qd&#34; } [1] =&gt; array(2){[0] =&gt;字符串(2)&#34; 72&#34; [1] =&GT; string(3)&#34; jav&#34; } [2] =&gt; array(2){[0] =&gt;字符串(2)&#34; 70&#34; [1] =&GT; string(4)&#34; da12&#34; } [3] =&gt; array(2){[0] =&gt;字符串(2)&#34; 71&#34; [1] =&GT; string(3)&#34; jav&#34; }}
但由于某种原因,我现在不确定我的输出:
答案 0 :(得分:1)
问题在于你如何在这里使用 array_push :
$this->messages[] = array_push($values, array($id, $name));
array_push 不会返回更新的数组,但会返回数组中的新项目数 - 请参阅http://php.net/manual/en/function.array-push.php。这就是为什么你在输出中增加整数的原因。
请执行以下操作:
while(list($id, $name) = mysqli_fetch_array($result)){
array_push($this->messages, array($id, $name));
}
或只是
while(list($id, $name) = mysqli_fetch_array($result)){
$this->messages[] = array('id'=>$id, 'name'=>$name);
}
然后您可以像这样访问 $ id 和 $ name :
$id = $message['id'];
$name = $message['name'];