Я пытаюсь переписать сценарий со-разработчиков и наткнулся на этот маленький драгоценный камень, я за жизнь меня не могу даже понять, что он делает, а тем более как его реорганизовать. Кто-нибудь объяснит мне, что он делает, и если моя интерпретация его кода верна?Закрытие с запутанным usort
исходный код:
$f = "return (${$v[0]}['{$k}'] - ${$v[1]}['{$k}']);";
usort($results, create_function('$a,$b',$f));
моя попытка и переписать его в качестве крышки:
$f = function ($k,$v)
{
return ($v[0][$k] - $v[1][$k]);
};
usort($results, $f($k, $v));
EDIT
Для ясности, $k
случайная строка, и $v
является массив либо ['a','b']
, либо массив ['b','a']
Я действительно потерял свою попытку, может быть, это было так?
usort($results, function() USE ($k,$v)
{
return ($v[0][$k] - $v[1][$k]);
});
'usort ($ результатов, $ F ('$ а, $ Ь')); '--- что вы здесь делаете: вы вызываете функцию и передаете ей строковый аргумент (в то время как он ожидает, что переданы два аргумента). Не помещайте его в переменную, но создавайте вместо него место, и все будет в порядке. – zerkms
«Может, это было?» --- Может быть, так оно и есть. В чем проблема? – zerkms
Я пытаюсь изменить то, что он сделал, на что-то более читаемое, так как я не понимаю, что это была за попытка, например, если он пытался взвешивать функцию. Его трудно объяснить, если вы не понимаете попытки – ehime