1. PHP 数组自定义排序

使用方法:

usort($customArray, "customSortFunctionName");#usort(数组, 自定义排序方法);

举例:

# 按照水果价格排序, 默认升序排列
function sort_by_price($fruit_a, $fruit_b) {
    if ($fruit_a['price'] > $fruit_b['price']) {
        return 1;
    } else if ($fruit_a['price'] == $fruit_b['price']) {
        return 0;
    } else {
        return -1;
    }
}

$fruit_array = array(
    array(
        "name"=>"Apple",
        "price"=>9
    ),
    array(
        "name"=>"Banana",
        "price"=>10
    ),
    array(
        "name"=>"Cherry",
        "price"=>8
    )
);

echo "排序前:";
print_r($fruit_array);# 查看排序前, $fruit_array 内容
echo "<br />";
usort($fruit_array, "sort_by_price");# 排序
echo "排序后:";
print_r($fruit_array);# 查看排序后结果
  1. 向数组指定位置插入内容

使用方法:

array_splice(array, offset, length, array): 向数组指定位置插入至少一个元素;

举例:

$fruit_a = array("Apple", "Almond", "Apricot");
$fruit_b = array("Banana", "Blackberry", "Beechnut");
echo "Before:<br />";
var_dump($fruit_a);
array_splice($fruit_a, 2, 0, $fruit_b);#将 $fruit_b 的内容插入到 $fruit_a 的第二个元素后面
echo "<br />After:<br />";
var_dump($fruit_a);
  1. 移除数组中指定位置内容

使用方法:

array_splice($customArray, $itemPosition, 1);#array_splice(自定义数组, 待移除内容在数组中的位置, 1);

举例:

$fruit_array = array(
    array(
        "name"=>"Apple",
        "price"=>9
    ),
    array(
        "name"=>"Banana",
        "price"=>10
    ),
    array(
        "name"=>"Cherry",
        "price"=>8
    )
);

echo "<br />Before:<br />";
prit_r($fruit_array);#移除 Banana 前, 查看 $furit_array 内容
array_splice($fruit_array, 1, 1);#移除 Banana
echo "<br />After:<br />";
var_dump($fruit_array);#移除 Banana 后, 查看 $furit_array 内容
  1. 批量移除数组中符合条件的元素:

使用方法:

array_walk($customArray, "customBatchDeleteFunctionName");#array_walk(自定义数组, 自定义批量删除方法)
sort($customArray);

举例:

$fruit_basket_array = array(
    array(
        'fruit_level'=>100,
        'fruit_name'=>"apple"
    ),
    array(
        'fruit_level'=>"error",
        'fruit_name'=>"banana"
    ),
    array(
        'fruit_level'=>100,
        'fruit_name'=>"cherry"
    ),
    array(
        'fruit_level'=>100,
        'fruit_name'=>"date"
    ),
    array(
        'fruit_level'=>"error",
        'fruit_name'=>"eggplant"
    )
);

echo "<br/>Before:<br/>";
print_r($fruit_basket_array);# 移除 fruit_level 非 100 之前, 查看 fruit_basket_array 内容

# 批量处理
array_walk($fruit_basket_array, function($val, $key) use(&$fruit_basket_array) {
    if ($val['fruit_level'] !== 100) {
        unset($fruit_basket_array[$key]);
    }
});
sort($fruit_basket_array);# 对处理结果重建索引和排序

echo "<br/>After:<br/>";
print_r($fruit_basket_array);# 移除 fruit_level 非 100 之后, 查看 fruit_basket_array 内容