下面是排序数组的函数。
它适用于关联数组和索引数组,包括字符串、整数和布尔值——并且它也保留了键。
function array_shove(array $array, $selected_key, $direction)
{
$new_array = array();
foreach ($array as $key => $value) {
if ($key !== $selected_key) {
$new_array["$key"] = $value;
$last = array('key' => $key, 'value' => $value);
unset($array["$key"]);
} else {
if ($direction !== 'up') {
//Value of next, moves pointer
$next_value = next($array);
//Key of next
$next_key = key($array);
//Check if $next_key is null,
//indicating there is no more elements in the array
if ($next_key !== null) {
//Add -next- to $new_array, keeping -current- in $array
$new_array["$next_key"] = $next_value;
unset($array["$next_key"]);
}
} else {
if (isset($last['key'])) {
unset($new_array["{$last['key']}"]);
}
//Add current $array element to $new_array
$new_array["$key"] = $value;
//Re-add $last to $new_array
$new_array["{$last['key']}"] = $last['value'];
}
//Merge new and old array
return $new_array + $array;
}
}
}
要使用该函数,只需这样做:
$contact_array = array(
'admin' => 'admin@example.com',
'webmaster' => 'webmaster@example.com',
'support' => 'support@example.com',
'reception' => 'reception@example.com',
);
//last parameter can either be "up" or "down"
$reordered = array_shove($contact_array, 'webmaster', 'down');
//Show the re-ordered array
print_r($reordered);
如果要将数组存储为 JSON:
echo json_encode($reordered);
建议在并发情况下使用文件处理程序类。
日期:2020-06-02 22:17:14 来源:oir作者:oir
