按 XML 给出的日期对 table 进行排序
usort table by date given by XML
我的问题是,我更改了有价值的日期
$date
成一个数组,叫做
$sortDate
现在,我想获取数组,并按日期对它进行排序。我的排序函数如下所示。
function sortArray($data, $field) {
if (!is_array($field))
$field = array($field);
usort($data, function($a, $b) use($field) {
$retval = 0;
foreach ($field as $fieldname) {
if ($retval == 0)
$retval = strnatcmp($a[$fieldname], $b[$fieldname]);
}
return $retval;
});
return array_reverse($data);
}
现在,这是我在开头谈到的贵重物品的定义。
$xml = simplexml_load_file('http://www.hokejbal.cz/xml/2017-2018/shedules/227.xml');
foreach ($xml->SKUPINA as $skupina) {
if ($skupina['id_sku'] != 1613)
continue;
foreach ($skupina->UTKANI as $utkani) {
$away = $utkani->AWAY;
$date = new DateTime($utkani->DATUM);
$sortDate = array();
$sortDate[] = $utkani->DATUM;
print_r($sortDate); //this is just control line, yes, it is array.
现在,我想对日期进行排序...所以我这样写
foreach ($utkani->DATUM as $item) {
$sortDate[] = array(
'datum' => $item->DATUM
);
}
if (isset($sortDate)) {
$sortDate = sortArray($sortDate, array('datum'));
所以,现在我到了,元素在我眼里应该按$date排序的时候了,所以我准备写这样的东西
<tr>
<td nowrap><?=$sortDate->format ('m.d.y') ; ?></td>
</tr>
但在这一点上,我只收到错误调用...
Fatal error: Uncaught Error: Call to a member function format() on array in C:\xampp\htdocs\SKKelti2008\Tabulky_rozpisy_statistiky\A\page-rozpis-1718.php:62 Stack trace: #0 {main} thrown in
C:\xampp\htdocs\SKKelti2008\Tabulky_rozpisy_statistiky\A\page-rozpis-1718.php on line 62
最后,这只是我的完整代码,因此您可以了解 table 发生了什么。这对解决问题并不重要,但它可以提供帮助。
<div id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<div class="svazTabulky">
<TABLE>
<TR>
<th colspan="9">1. Národní hokejbalová liga 2017/2018</th>
</TR>
<TR>
<TD nowrap>DATUM</TD>
<TD nowrap>ČAS</TD>
<TD nowrap>MÍSTO</TD>
<TD nowrap>DOMÁCÍ</TD>
<TD nowrap>HOSTÉ</TD>
<TD nowrap>Výsledek</TD>
</tr>
<?php
function sortArray($data, $field) {
if (!is_array($field))
$field = array($field);
usort($data, function($a, $b) use($field) {
$retval = 0;
foreach ($field as $fieldname) {
if ($retval == 0)
$retval = strnatcmp($a[$fieldname], $b[$fieldname]);
}
return $retval;
});
return array_reverse($data);
}
// put your code here
$xml = simplexml_load_file('http://www.hokejbal.cz/xml/2017-2018/shedules/227.xml');
foreach ($xml->SKUPINA as $skupina) {
if ($skupina['id_sku'] != 1613)
continue;
foreach ($skupina->UTKANI as $utkani) {
$away = $utkani->AWAY;
$date = new DateTime($utkani->DATUM);
$sortDate = array();
foreach ($utkani->DATUM as $item) {
$sortDate[] = array(
'datum' => $item->DATUM
);
}
if (isset($sortDate)) {
$sortDate = sortArray($sortDate, array('datum'));
print_r($sortDate);
foreach ($utkani->HOME as $home) {
if ($home['kod_cmshb']!=3202007 and $away['kod_cmshb']!=3202007) continue;
?>
<tr <?php if($utkani['kod_cmshb']==3202007){ ?> class="beroun" <?php } ?>>
<td nowrap><?=$sortDate->format ('m.d.y') ; ?></td>
<td nowrap><?=$utkani->CAS ?></td>
<td nowrap><?=$utkani->MISTO ?></td>
<td nowrap><?=$utkani->HOME ?></td>
<td nowrap><?=$utkani->AWAY ?></td>
<td nowrap><?=$utkani->GH ?>:<?=$utkani->GA ?></td>
</tr>
<?php
}
}
}
break;
}
?>
</TABLE>
<p>Data převzata z <a href="http://hokejbal.cz"> hokejbal.cz</a></p>
</div>
</div><!-- #content .site-content -->
</div><!-- #primary .content-area -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>
}
}
}
如果你运行:
var_dump($sortDate);
这将导致:
array(1) {
[0]=>
array(1) {
["datum"]=>
object(SimpleXMLElement)#7 (0) {
}
}
}
在那种情况下,$sortDate->format ('m.d.y')
将不起作用,因为您想 运行 数组上的 format 方法。
您声明了一个 $date
变量,但您没有在此代码中使用它。
$date = new DateTime($utkani->DATUM);
也许您正在寻找 $date->format ('m.d.y') ;
?
我的问题是,我更改了有价值的日期
$date
成一个数组,叫做
$sortDate
现在,我想获取数组,并按日期对它进行排序。我的排序函数如下所示。
function sortArray($data, $field) {
if (!is_array($field))
$field = array($field);
usort($data, function($a, $b) use($field) {
$retval = 0;
foreach ($field as $fieldname) {
if ($retval == 0)
$retval = strnatcmp($a[$fieldname], $b[$fieldname]);
}
return $retval;
});
return array_reverse($data);
}
现在,这是我在开头谈到的贵重物品的定义。
$xml = simplexml_load_file('http://www.hokejbal.cz/xml/2017-2018/shedules/227.xml');
foreach ($xml->SKUPINA as $skupina) {
if ($skupina['id_sku'] != 1613)
continue;
foreach ($skupina->UTKANI as $utkani) {
$away = $utkani->AWAY;
$date = new DateTime($utkani->DATUM);
$sortDate = array();
$sortDate[] = $utkani->DATUM;
print_r($sortDate); //this is just control line, yes, it is array.
现在,我想对日期进行排序...所以我这样写
foreach ($utkani->DATUM as $item) {
$sortDate[] = array(
'datum' => $item->DATUM
);
}
if (isset($sortDate)) {
$sortDate = sortArray($sortDate, array('datum'));
所以,现在我到了,元素在我眼里应该按$date排序的时候了,所以我准备写这样的东西
<tr>
<td nowrap><?=$sortDate->format ('m.d.y') ; ?></td>
</tr>
但在这一点上,我只收到错误调用...
Fatal error: Uncaught Error: Call to a member function format() on array in C:\xampp\htdocs\SKKelti2008\Tabulky_rozpisy_statistiky\A\page-rozpis-1718.php:62 Stack trace: #0 {main} thrown in
C:\xampp\htdocs\SKKelti2008\Tabulky_rozpisy_statistiky\A\page-rozpis-1718.php on line 62
最后,这只是我的完整代码,因此您可以了解 table 发生了什么。这对解决问题并不重要,但它可以提供帮助。
<div id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<div class="svazTabulky">
<TABLE>
<TR>
<th colspan="9">1. Národní hokejbalová liga 2017/2018</th>
</TR>
<TR>
<TD nowrap>DATUM</TD>
<TD nowrap>ČAS</TD>
<TD nowrap>MÍSTO</TD>
<TD nowrap>DOMÁCÍ</TD>
<TD nowrap>HOSTÉ</TD>
<TD nowrap>Výsledek</TD>
</tr>
<?php
function sortArray($data, $field) {
if (!is_array($field))
$field = array($field);
usort($data, function($a, $b) use($field) {
$retval = 0;
foreach ($field as $fieldname) {
if ($retval == 0)
$retval = strnatcmp($a[$fieldname], $b[$fieldname]);
}
return $retval;
});
return array_reverse($data);
}
// put your code here
$xml = simplexml_load_file('http://www.hokejbal.cz/xml/2017-2018/shedules/227.xml');
foreach ($xml->SKUPINA as $skupina) {
if ($skupina['id_sku'] != 1613)
continue;
foreach ($skupina->UTKANI as $utkani) {
$away = $utkani->AWAY;
$date = new DateTime($utkani->DATUM);
$sortDate = array();
foreach ($utkani->DATUM as $item) {
$sortDate[] = array(
'datum' => $item->DATUM
);
}
if (isset($sortDate)) {
$sortDate = sortArray($sortDate, array('datum'));
print_r($sortDate);
foreach ($utkani->HOME as $home) {
if ($home['kod_cmshb']!=3202007 and $away['kod_cmshb']!=3202007) continue;
?>
<tr <?php if($utkani['kod_cmshb']==3202007){ ?> class="beroun" <?php } ?>>
<td nowrap><?=$sortDate->format ('m.d.y') ; ?></td>
<td nowrap><?=$utkani->CAS ?></td>
<td nowrap><?=$utkani->MISTO ?></td>
<td nowrap><?=$utkani->HOME ?></td>
<td nowrap><?=$utkani->AWAY ?></td>
<td nowrap><?=$utkani->GH ?>:<?=$utkani->GA ?></td>
</tr>
<?php
}
}
}
break;
}
?>
</TABLE>
<p>Data převzata z <a href="http://hokejbal.cz"> hokejbal.cz</a></p>
</div>
</div><!-- #content .site-content -->
</div><!-- #primary .content-area -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>
}
}
}
如果你运行:
var_dump($sortDate);
这将导致:
array(1) {
[0]=>
array(1) {
["datum"]=>
object(SimpleXMLElement)#7 (0) {
}
}
}
在那种情况下,$sortDate->format ('m.d.y')
将不起作用,因为您想 运行 数组上的 format 方法。
您声明了一个 $date
变量,但您没有在此代码中使用它。
$date = new DateTime($utkani->DATUM);
也许您正在寻找 $date->format ('m.d.y') ;
?