【发布时间】:2015-07-29 14:06:57
【问题描述】:
我不知道为什么我不能得到预期的结果。 结果显示 2 > 10 > 1 但我想要 10 > 2 > 1 谁能帮我?谢谢
<?
function reorder($a, $b)
{
$a = substr($a, strlen("a/"));
$a = substr($a, 0, -strlen(".php"));
$b = substr($b, strlen("a/"));
$b = substr($b, 0, -strlen(".php"));
switch ($a) {
case "1m_microUSB_cable":
$a['order'] = 1;
break;
case "25cm_microUSB_cable":
$a['order'] = 2;
break;
case "30cm_lightning_cable":
$a['order'] = 3;
break;
case "1.5m_lightning_cable":
$a['order'] = 5;
break;
case "1m_lightning_cable":
$a['order'] = 4;
break;
case "1m_microUSB_upgrade_cable":
$a['order'] = 6;
break;
case "hand_ring_cable_Android":
$a['order'] = 7;
break;
case "hand_ring_cable_Apple":
$a['order'] = 8;
break;
case "Light_bulb_key_ring":
$a['order'] = 9;
break;
case "candy_machine":
$a['order'] = 10;
break;
default:
$a['order'] = 999;
}
switch ($b) {
case "1m_microUSB_cable":
$b['order'] = 1;
break;
case "25cm_microUSB_cable":
$b['order'] = 2;
break;
case "30cm_lightning_cable":
$b['order'] = 3;
break;
case "1.5m_lightning_cable":
$b['order'] = 5;
break;
case "1m_lightning_cable":
$b['order'] = 4;
break;
case "1m_microUSB_upgrade_cable":
$b['order'] = 6;
break;
case "hand_ring_cable_Android":
$b['order'] = 7;
break;
case "hand_ring_cable_Apple":
$b['order'] = 8;
break;
case "Light_bulb_key_ring":
$b['order'] = 9;
break;
case "candy_machine":
$b['order'] = 10;
break;
default:
$b['order'] = 999;
}
if ($a['order'] == $b['order']) {
return 0;
} elseif ($a['order'] > $b['order']) {
return -1;
} else {
return 1;
}
}
?>
我想重新排序数组,我使用
$glob = glob("a/*.php");
include ("reorder.php");
usort($glob, "reorder");
foreach ($glob as $filename) {
include ($filename);
include ("templates/a.php");
}
$glob 的转储:
array ( 0 => 'a/Light_bulb_key_ring.php', 1 => 'a/hand_ring_cable_Apple.php', 2 => 'a/hand_ring_cable_Android.php', 3 => 'a/1m_microUSB_upgrade_cable.php', 4 => 'a/1.5m_lightning_cable.php', 5 => 'a/1m_lightning_cable.php', 6 => 'a/30cm_lightning_cable.php', 7 => 'a/25cm_microUSB_cable.php', 8 => 'a/candy_machine.php', 9 => 'a/1m_microUSB_cable.php', )
我将数组从 1 重新排序到 9 是可以的,但是当有订单 10 时,订单 10 将在订单 1 之后而不是订单 9。我不知道为什么?我希望有一个人可以帮助我。谢谢! 对不起我的英语不好。
很抱歉,我写得不清楚。因此,我创建了一个图像。
现在的订单: Image 1
预期顺序: Image 2
【问题讨论】:
-
其实,我怕我完全误解了你。您能否发布 $glob 的确切内容、您期望的确切顺序以及对该顺序的解释?
-
$glob = glob("a/*.php");我的预期顺序:(文件名的自定义顺序)例如:test0.php = order 1 test1.php = order 2 etc...
-
删除所有ifs并写
return $a['order'] - $b['order']; -
或者使用 natsort() - php.net/manual/en/function.natsort.php
-
return $b['order'] - $a['order'];还是返回上面的结果...