我有阵列需要按照它们的外观排序,因为它们是我的自由意志手动编写的。请注意,值是预期显示的提示:
$options = array("the array retrieved from some forms");
$items = array();
foreach ($options as $key => $val) {
switch ($key) {
case 'three':
$items[] = "this should come first";
$items[] = "now the second in order";
$items[] = "the third";
$items[] = "forth";
switch ($val) {
case 'a':
case 'b':
$items[] = "fifth";
$items[] = "should be six in order";
break;
case 'c':
default:
$items[] = "7 in order";
break;
}
break;
...............
正如您所看到的,值可以是任何值,但我需要的是根据它们的外观内爆和显示项目。它的所有手动订单,首先应该打印在顶部。
预期:
"this should come first";
"now the second in order";
"the third";
"forth";
"fifth";
"should be six in order";
"7 in order";
当前意外:
"should be six in order";
"forth";
"7 in order";
"the third";
"fifth";
"this should come first";
"now the second in order";
但我似乎无法应用此http://www.php.net/manual/en/array.sorting.php中的任何排序 我怀疑那些$ item是按照我无法重新排序的表格在某处订购的。我只是有能力从上到下编写输出和顺序。但我无法将密钥插入$ items,因为我需要自由重新排序。
我查看了输出,键未按预期排序。
非常感谢任何提示。感谢
答案 0 :(得分:2)
似乎完成数组的步骤不符合您的要求。
也许你可以用一些技巧来实现你想要的东西
例如插入“键指针”
$ikey = 0;
$options = array("the array retrieved from some forms");
$items = array();
foreach ($options as $key => $val) {
switch ($key) {
case 'three':
$items[$ikey++] = "this should come first";
$items[$ikey++] = "now the second in order";
$items[$ikey++] = "the third";
$items[$ikey++] = "forth";
switch ($val) {
case 'a':
case 'b':
$items[$ikey++] = "fifth";
$items[$ikey++] = "should be six in order";
break;
case 'c':
default:
$items[$ikey++] = "7 in order";
break;
}
break;
我不确定这是否有帮助,因为您发布了不完整的代码。
对不起我的英语,如果有任何错误
答案 1 :(得分:0)
php源出现给我们的方式与编译器不同。所以这不可能。但是,如果你在源代码上运行正则表达式,那么它可能(不是很好)。
示例:
$source = file_get_contents(__FILE__);
preg_match_all('#\$items\[\]\s*=\s*"([^"]+)"#', $source, $match);
// now $match[1] contains the strings.
$strings = $match[1];