我有一个数组
Array
(
[0] => Array
(
[COMPANY NAME] => 1
[LPO NUMBER] => PO1
[LPO DATE] => 2011-04-13 10:08:37
[LPO AMT] => 1000
[PENDING AMT] => 1000
[PRIORITY] => 1
[AMOUNT] => 200
[BENEFICIARY NAME] => Self
[PAYMENT AS] => 1
[VENDOR NAME] => 0
[FINAL PAYMENT] =>
[doc_id] => 2
[Vendor Name] => Dept. of Economic Development.
[Reference Number] => PR_XHA_210
[Pay Cheque Number] => N/A
[Paid] => 0
)
[1] => Array
(
[COMPANY NAME] => 1
[LPO NUMBER] => PO1
[LPO DATE] => 2011-04-13 10:08:37
[LPO AMT] => 1000
[PENDING AMT] => 800
[PRIORITY] => 1
[AMOUNT] => 800
[BENEFICIARY NAME] => Self
[PAYMENT AS] => 1
[VENDOR NAME] => 0
[FINAL PAYMENT] =>
[doc_id] => 3
[Vendor Name] => Dept. of Economic Development.
[Reference Number] => PR_XHA_211
[Pay Cheque Number] => N/A
[Paid] => 0
)
)我需要按照所需的索引顺序排列数组,如下所示
[0] => Array
(
[Reference Number] => PR_XHA_210
[Vendor Name] => Dept. of Economic Development.
[BENEFICIARY NAME] => Self
[LPO DATE] => 2011-04-13 10:08:37
[LPO NUMBER] => PO1
[LPO AMT] => 1000
[Paid] => 0
[AMOUNT] => 200
[doc_id] => 2
[doc_id] => 2
[Pay Cheque Number] => N/A
)如何做到这一点?请帮帮我。
发布于 2011-04-13 13:50:55
试试这个(未测试):
$keys = array(
'Reference Number',
'Vendor Name',
...
);
$reordered = array();
foreach ($array as $item) {
$new_item = array();
foreach ($keys as $key) {
$new_item[$key] = $item[$key];
}
$reordered[] = $new_item;
}这将创建一个包含所有行的新数组$reordered,并根据$keys中定义的顺序对键进行重新排序。
或者,您可以使用uksort和一个回调函数对数组进行就地重新排序(同样,未经测试)。
function sort_keys($a, $b) {
static $keys = array(
'Reference Number',
'Vendor Name',
...
);
return array_search($a, $keys) - array_search($b, $keys);
}
foreach ($array as &$item) {
uksort($item, 'sort_keys');
}第三种选择是让您的数组保持原样,但编辑视图代码:
$keys = array(
'Reference Number',
'Vendor Name',
...
);
foreach ($array as $item) {
foreach ($keys as $key) {
printf('<tr><th>%s</th><td>%s</td></tr>',
htmlspecialchars($key),
htmlspecialchars($item[$key]));
}
}发布于 2011-04-13 13:47:42
您可以尝试巧妙地对数组进行实际排序,但最简单的方法是简单地重新创建它:
$rearrangedArray = array(
'Reference Number' => $oldArray['Reference Number'],
'Vendor Name' => $oldArray['Vendor Name'],
...
);不过,这似乎是一件非常荒谬的事情。您的数组是按数字索引和排序的,或者您使用的是关联数组。两者都需要是非常奇怪的。
我需要的是迭代数组,以便每个引用都获得它的值所需的特定值,就像wise这里的first "<td>“必须有”
"
<td>“”作为第一个值
在这种情况下,您应该显式创建表,如下所示:
<tr>
<td>Reference Number:</td> <td><?php echo $array['Reference Number']; ?></td>
<td>Vendor Name:</td> <td><?php echo $array['Vendor Name']; ?></td>
...
</tr>发布于 2011-04-13 13:52:57
从评论中阅读你的需求,不要对你的关联数组排序。相反,做一件更干净的事情,比如:
数组数组=(“参考号”,“供应商名称”,“受益者名称”....);
for($i=0;$i< count($dataArray);$i++)
{ $myCurrentKey = $myIndexes[$i];
$myCurrentData = $dataArray[$myCurrentKey];
echo "<td>".$myCurrentData."</td>";
}在按顺序打印<td>时,从$myIndexes获取keyName,然后从数据数组获取值。
https://stackoverflow.com/questions/5644854
复制相似问题