合并2个数组

时间:2012-02-07 00:15:13

标签: php mysql

我有两个独立的数组从MYSQL数据库中提取,并希望在键上组合两个数组,所以我可以使用php foreach语句。

*我尝试用两者进行1次查询,但无法弄清楚如何让我的foreach $ video [0]正常工作。*

match_descr =视频代码

m_date = date

SQL

    $query = "SELECT match_descr FROM  #__bl_match  WHERE match_descr != '' ORDER BY m_date DESC";
    $db->setQuery($query);
    $videomatch = $db->loadResultArray();

     $query = "SELECT m_date FROM  #__bl_match  WHERE match_descr != '' ORDER BY m_date DESC";
    $db->setQuery($query);
    $videomatch2 = $db->loadResultArray();

PHP     

$video = $this->videomatch;

for ($i=1;$i<=1;$i++){
echo '<div id="videoFrame" align="left"><iframe name="videoFrame" title="YouTube video     
player" width="560" height="315"    src="http://www.youtube.com/embed/' . $video[0] . '" frameborder="0"     allowfullscreen=""></iframe></div>';
  echo '<br />';

 echo '<br />';
 echo '<div id="videoThumbnails" align="left">'; 
 echo '<table>';
foreach ($video as $value)
 {

  echo '<tr>';
  echo '<td>';
 echo '<a href="http://www.youtube.com/embed/' . $value . '" target="videoFrame"><img height="75px" width="123px" src="http://img.youtube.com/vi/' . $value. '/2.jpg" alt="' .     $value . '" />    </a>';
echo '</td>';
echo '<td>';
echo (THIS IS WHERE I WOULD LIKE TO PUT THIS VIDEOS DATE);
echo '<br />';
echo 'California';
echo '<br />';
echo '1-19-2012';
echo '</td>';
echo '</tr>';

}
echo '</div>';}

2 个答案:

答案 0 :(得分:0)

您(通常)最好在同一查询中选择两行:

SELECT match_descr, m_date FROM  #__bl_match  WHERE match_descr != '' ORDER BY m_date DESC

看来你正在使用Joomla。如果是这种情况,我认为你不能使用loadResultArray()来迭代多个列(你可以给它一个索引来获取其中一个列,但在这种情况下这没有用)。相反,您可以使用loadRowList来获取列的索引数组,或使用loadAssocList来获取列的关联数组。

它们可以如下使用(为简洁起见,不使用所有html):

loadRowList:

$query = "SELECT match_descr, m_date FROM  #__bl_match  WHERE match_descr != '' ORDER BY m_date DESC";
$db->setQuery($query);
$videomatch = $db->loadRowList();

foreach ($videomatch as $row) {
    echo "{$row[0]} ({$row[1]})\n";
}

loadAssocList:

$query = "SELECT match_descr, m_date FROM  #__bl_match  WHERE match_descr != '' ORDER BY m_date DESC";
$db->setQuery($query);
$videomatch = $db->loadAssocList();

foreach ($videomatch as $row) {
    echo "{$row['match_desc']} ({$row['m_date']})\n";
}

参考:http://docs.joomla.org/How_to_use_the_database_classes_in_your_script

答案 1 :(得分:0)

我建议您关注。

$query = "SELECT match_descr, m_date FROM  #__bl_match  WHERE match_descr != '' ORDER BY m_date DESC";
$db->setQuery($query);
$videomatch = $db->loadResultArray();

以下循环只能使用一次。所以我认为你在这里不需要for循环。

for ($i=1;$i<=1;$i++){

你可以改变你的foreach循环,并使用它

foreach ($videomatch as $video)
 {
    $videoCode = $video['match_descr'];
    $date = $video['m_date'];
}

请尝试。如果你想按照你提到的那样使用$video[0]。将其用作$video[0]['match_descr']