我有一个对 2 个多维数组进行排序的 php 脚本。现在,如果我使用普通的 array_multisort 它会混淆某些行的 2 个数组,因为这两个数组都有一些棘手的元素
例如:a[2][2]='35' 和 b[2][2]='0035'
另外,a[3][4]='+0.03' b[3][4]='+.03'
a[4][6]='31-12-2012' b[4][6]='12/31/2012'
由于上述两个数组的棘手元素差异排序给出了不同的结果。我需要它们进行适当的排序,因为我的要求是为了分析目的在每一行中进行一对一匹配。
请建议我如何继续对这些数组进行“智能”排序以给出相同的结果
我已经尝试过
function sort2dArray($data) {
$tmp = array();
$lineCount = count($data);
foreach ($data as $lineNum => $lineData) {
foreach ($lineData as $column => $value) {
$tmp[$column][$lineNum] = standardize($value);
}
}
$multiSortArgs = array();
foreach ($tmp as $column => $columnData) {
array_push($multiSortArgs, $columnData, SORT_ASC);
}
$multiSortArgs[] = &$data;
call_user_func_array('array_multisort', $multiSortArgs);
return $data;
}
function standardize($value)
{
if(is_numeric($value))
$pval= $value + 0;
else
$pval= $value;
return $pval;
}
更新:两个数组中的 o/p 以 ',' 作为分隔符...仅考虑 0035 和 35 的情况
BA2063,,,110Y,EFW
BA2063,,,110Y,EFW
BA2063,,,110Y,EFW
BA2063,,,121H,ECD
BA2063,,,121H,ECD
BA2063,,,121H,ECD
BA2063,,,0035,ESW
BA2063,,,0035,EFW
BA2063,,,0035,EFW
BA2063,,,0035,EFW
BA2063,,,1L9M,EFW
BA2063,,,1L9M,EFW
BA2063,,,35,ESW
BA2063,,,35,EFW
BA2063,,,35,EFW
BA2063,,,35,EFW
BA2063,,,110Y,EFW
BA2063,,,110Y,EFW
BA2063,,,110Y,EFW
BA2063,,,121H,ECD
BA2063,,,121H,ECD
BA2063,,,121H,ECD