我无法从多维数组获得任何输出。我正在尝试使用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]=> array(2) { [0]=> string(2) "73" [1]=> string(2) "qd" } [1]=> array(2) { [0]=> string(2) "72" [1]=> string(3) "jav" } [2]=> array(2) { [0]=> string(2) "70" [1]=> string(4) "da12" } [3]=> array(2) { [0]=> string(2) "71" [1]=> string(3) "jav" } }
但是由于某种原因,我不确定我的输出现在是这样的:
问题在于您如何在此处使用 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'];