數(shù)組中的鍵根據(jù)另一個數(shù)組的鍵排序

$sort = ['advertiser_id','advertiser_name','raw','valid_clicks_count','invalid_clicks_count','conversions_count','revenue'];

$arr = Array(
    [0] => Array
        (
            [advertiser_id] => 1
            [valid_clicks_count] => 4
            [conversions_count] => 2
            [revenue] => 0.40
            [invalid_clicks_count] => 3
            [raw] => 7
            [advertiser_name] => Ad1
        )
)

以上二維數(shù)組中的一維數(shù)組的鍵根據(jù)$sort的值進行排序
現(xiàn)有兩種方式:

方式一:

創(chuàng)建一個新的數(shù)組,循環(huán)賦值,再注銷掉原來的數(shù)組

$newArr = [];
foreach ($arr as $key => $val){
                    $newArr[$key]['advertiser_id'] = $val['advertiser_id'];
                    $newArr[$key]['advertiser_name'] = $val['advertiser_name'];
                    $newArr[$key]['raw'] = $val['raw'];
                    $newArr[$key]['valid_clicks_count'] = $val['valid_clicks_count'];
                    $newArr[$key]['invalid_clicks_count'] = $val['invalid_clicks_count'];
                    $newArr[$key]['conversions_count'] = $val['conversions_count'];
                    $newArr[$key]['revenue'] = $val['revenue'];
                }
                unset($exportData);

效果符合期望:

Array
(
    [0] => Array
        (
            [advertiser_id] => 1
            [advertiser_name] => Ad1
            [raw] => 7
            [valid_clicks_count] => 4
            [invalid_clicks_count] => 3
            [conversions_count] => 2
            [revenue] => 0.40
        )
)

測試運行時間和空間的數(shù)據(jù)


開始內(nèi)存:377704Array
(
    [0] => Array
        (
            [advertiser_id] => 1
            [advertiser_name] => Ad1
            [raw] => 7
            [valid_clicks_count] => 4
            [invalid_clicks_count] => 3
            [conversions_count] => 2
            [revenue] => 0.40
        )

)
<br />[頁面執(zhí)行時間:3.9815902709961E-5 ]秒<br />運行后內(nèi)存:378800回到正常內(nèi)存:378800

方式二:適用php的內(nèi)置函數(shù) array_flip,array_replace

$sort = ['advertiser_id','advertiser_name','raw','valid_clicks_count','invalid_clicks_count','conversions_count','revenue'];
foreach ($data as &$val){
    $val = (array_replace(array_flip($sort), $val));
}

效果符合期望值

開始內(nèi)存:376088Array
(
    [0] => Array
        (
            [advertiser_id] => 1
            [advertiser_name] => Ad1
            [raw] => 7
            [valid_clicks_count] => 4
            [invalid_clicks_count] => 3
            [conversions_count] => 2
            [revenue] => 0.40
        )

)
<br />[頁面執(zhí)行時間:2.1934509277344E-5 ]秒<br />運行后內(nèi)存:376728回到正常內(nèi)存:376728
經(jīng)過多次測試,兩者運行平均時間相差不大,可忽略,運行內(nèi)存消耗方式一大于方式二,推薦用方式二來處理。
PS:測試腳本
<?php
echo '開始內(nèi)存:'.memory_get_usage(), '';

$stime=microtime(true); //獲取程序開始執(zhí)行的時間

$data = '[{"advertiser_id":1,"valid_clicks_count":4,"conversions_count":2,"revenue":"0.40","invalid_clicks_count":3,"raw":7,"advertiser_name":"Ad1"}]';
$data = json_decode($data, true);
//方式一:
$sortExportData = [];
foreach ($data as $key => $val){
    $sortExportData[$key]['advertiser_id'] = $val['advertiser_id'];
    $sortExportData[$key]['advertiser_name'] = $val['advertiser_name'];
    $sortExportData[$key]['raw'] = $val['raw'];
    $sortExportData[$key]['valid_clicks_count'] = $val['valid_clicks_count'];
    $sortExportData[$key]['invalid_clicks_count'] = $val['invalid_clicks_count'];
    $sortExportData[$key]['conversions_count'] = $val['conversions_count'];
    $sortExportData[$key]['revenue'] = $val['revenue'];
}
print_r($sortExportData);
unset($data);

//方式二:
$sort = ['advertiser_id','advertiser_name','raw','valid_clicks_count','invalid_clicks_count','conversions_count','revenue'];
foreach ($data as &$val){
    $val = (array_replace(array_flip($sort), $val));
}
print_R($data);

$etime=microtime(true);//獲取程序執(zhí)行結束的時間
$total=$etime-$stime;   //計算差值
echo "<br />[頁面執(zhí)行時間:{$total} ]秒".'<br />';

echo '運行后內(nèi)存:'.memory_get_usage(), '';
unset($tmp);
echo '回到正常內(nèi)存:'.memory_get_usage();
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容