编辑:我重写了我的帖子,以便更清楚地提供一个具有实际价值的独立案例(不再有 Ajax)。
我有 2 个完全相同的数组,只是其中一个具有相同的值但已清理(html、特殊字符等)。
我想评估针对“arrayClean”的排序,但根据该评估对“arrayOriginal”进行排序(而不是 arrayClean)。
所以,这就是我所拥有的:
<?php
$arrayOriginal = array(
array('id' => '100','surface' => '<span>300</span>','whatever' => 'qSDqsd'),
array('id' => '5465','surface' => '100 ch','whatever' => 'ghjkghjk'),
array('id' => '40489','surface' => '<b>1000</b>','whatever' => 'fgsdfg')
);
$arrayClean = array(
array('id' => '100','surface' => '300','whatever' => 'qSDqsd'),
array('id' => '5465','surface' => '100','whatever' => 'ghjkghjk'),
array('id' => '40489','surface' => '1000','whatever' => 'fgsdfg')
);
usort($arrayOriginal, function($a, $b) use (&$arrayClean) {
return $a['surface'] < $b['surface'];
});
echo '<pre>'; print_r($arrayOriginal); echo '</pre>';
?>
这是我得到的(这是错误的,因为排序似乎没有考虑 arrayClean):
Array
(
[0] => Array
(
[id] => 100
[surface] => <span>300</span>
[whatever] => qSDqsd
)
[1] => Array
(
[id] => 40489
[surface] => <b>1000</b>
[pwhatever] => fgsdfg
)
[2] => Array
(
[id] => 5465
[surface] => 100 ch
[whatever] => ghjkghjk
)
)
但如果我单独使用 arrayClean,只是为了检查排序脚本是否正确:
usort($arrayClean, function($a, $b) {
return $a['surface'] < $b['surface'];
});
echo '<pre>'; print_r($arrayClean); echo '</pre>';
那么结果就是我所期望的:
Array
(
[0] => Array
(
[id] => 40489
[surface] => 1000
[whatever] => fgsdfg
)
[1] => Array
(
[id] => 100
[surface] => 300
[whatever] => qSDqsd
)
[2] => Array
(
[id] => 5465
[surface] => 100
[whatever] => ghjkghjk
)
)
因此,评估 arrayClean 但相应地对 arrayOriginal 进行排序似乎不起作用。它只评估和排序 arrayOriginal。我用错了“use()”吗?我应该用别的东西吗?
素胚勾勒不出你
哔哔one
皈依舞