亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 建站經驗 > 正文

PHP數組操作類實例

2024-04-25 20:38:57
字體:
來源:轉載
供稿:網友

本文實例講述了PHP數組操作類。分享給大家供大家參考。具體如下:

class ArrayHelper{

/**

* 從數組中刪除空白的元素(包括只有空白字符的元素)

*

* 用法:

* @code php

* $arr = array('', 'test', ' ');

* ArrayHelper::removeEmpty($arr);

*

* dump($arr);

* // 輸出結果中將只有 'test'

* @endcode

*

* @param array $arr 要處理的數組

* @param boolean $trim 是否對數組元素調用 trim 函數

*/

static function removeEmpty(& $arr, $trim = TRUE)

{

foreach ($arr as $key => $value)

{

if (is_array($value))

{

self::removeEmpty($arr[$key]);

}

else

{

$value = trim($value);

if ($value == '')

{

unset($arr[$key]);

}

elseif ($trim)

{

$arr[$key] = $value;

}

}

}

}

/**

* 從一個二維數組中返回指定鍵的所有值

*

* 用法:

* @code php

* $rows = array(

* array('id' => 1, 'value' => '1-1'),

* array('id' => 2, 'value' => '2-1'),

* );

* $values = ArrayHelper::getCols($rows, 'value');

*

* dump($values);

* // 輸出結果為

* // array(

* // '1-1',

* // '2-1',

* // )

* @endcode

*

* @param array $arr 數據源

* @param string $col 要查詢的鍵

*

* @return array 包含指定鍵所有值的數組

*/

static function getCols($arr, $col)

{

$ret = array();

foreach ($arr as $row)

{

if (isset($row[$col])) {

$ret[] = $row[$col];

}

}

return $ret;

}

/**

* 將一個二維數組轉換為 HashMap,并返回結果

*

* 用法1:

* @code php

* $rows = array(

* array('id' => 1, 'value' => '1-1'),

* array('id' => 2, 'value' => '2-1'),

* );

* $hashmap = ArrayHelper::toHashmap($rows, 'id', 'value');

*

* dump($hashmap);

* // 輸出結果為

* // array(

* // 1 => '1-1',

* // 2 => '2-1',

* // )

* @endcode

*

* 如果省略 $valueField 參數,則轉換結果每一項為包含該項所有數據的數組。

*

* 用法2:

* @code php

* $rows = array(

* array('id' => 1, 'value' => '1-1'),

* array('id' => 2, 'value' => '2-1'),

* );

* $hashmap = ArrayHelper::toHashmap($rows, 'id');

*

* dump($hashmap);

* // 輸出結果為

* // array(

* // 1 => array('id' => 1, 'value' => '1-1'),

* // 2 => array('id' => 2, 'value' => '2-1'),

* // )

* @endcode

*

* @param array $arr 數據源

* @param string $keyField 按照什么鍵的值進行轉換

* @param string $valueField 對應的鍵值

*

* @return array 轉換后的 HashMap 樣式數組

*/

static function toHashmap($arr, $keyField, $valueField = NULL)

{

$ret = array();

if ($valueField)

{

foreach ($arr as $row)

{

$ret[$row[$keyField]] = $row[$valueField];

}

}

else

{

foreach ($arr as $row)

{

$ret[$row[$keyField]] = $row;

}

}

return $ret;

}

/**

* 將一個二維數組按照指定字段的值分組

*

* 用法:

* @endcode

*

* @param array $arr 數據源

* @param string $keyField 作為分組依據的鍵名

*

* @return array 分組后的結果

*/

static function groupBy($arr, $keyField)

{

$ret = array();

foreach ($arr as $row)

{

$key = $row[$keyField];

$ret[$key][] = $row;
}

return $ret;

}

/**
* 將一個平面的二維數組按照指定的字段轉換為樹狀結構

*

*

* 如果要獲得任意節點為根的子樹,可以使用 $refs 參數:

* @code php

* $refs = null;

* $tree = ArrayHelper::tree($rows, 'id', 'parent', 'nodes', $refs);

*

* // 輸出 id 為 3 的節點及其所有子節點

* $id = 3;

* dump($refs[$id]);

* @endcode

*

* @param array $arr 數據源

* @param string $keyNodeId 節點ID字段名

* @param string $keyParentId 節點父ID字段名

* @param string $keyChildrens 保存子節點的字段名

* @param boolean $refs 是否在返回結果中包含節點引用

*

* return array 樹形結構的數組

*/

static function toTree($arr, $keyNodeId, $keyParentId = 'parent_id', $keyChildrens = 'childrens', & $refs = NULL)

{

$refs = array();

foreach ($arr as $offset => $row)

{

$arr[$offset][$keyChildrens] = array();

$refs[$row[$keyNodeId]] =& $arr[$offset];

}

$tree = array();

foreach ($arr as $offset => $row)

{

$parentId = $row[$keyParentId];

if ($parentId)

{

if (!isset($refs[$parentId]))

{

$tree[] =& $arr[$offset];

continue;

}

$parent =& $refs[$parentId];

$parent[$keyChildrens][] =& $arr[$offset];

}

else

{


$tree[] =& $arr[$offset];

}

}

return $tree;

}

/**

* 將樹形數組展開為平面的數組

*

* 這個方法是 tree() 方法的逆向操作。

*

* @param array $tree 樹形數組

* @param string $keyChildrens 包含子節點的鍵名

*

* @return array 展開后的數組

*/

static function treeToArray($tree, $keyChildrens = 'childrens')

{

$ret = array();

if (isset($tree[$keyChildrens]) && is_array($tree[$keyChildrens]))

{

foreach ($tree[$keyChildrens] as $child)

{

$ret = array_merge($ret, self::treeToArray($child, $keyChildrens));

}

unset($node[$keyChildrens]);

$ret[] = $tree;

}

else

{

$ret[] = $tree;

}

return $ret;

}

/**

* 根據指定的鍵對數組排序

*

* @endcode

*

* @param array $array 要排序的數組

* @param string $keyname 排序的鍵

* @param int $dir 排序方向

*

* @return array 排序后的數組

*/

static function sortByCol($array, $keyname, $dir = SORT_ASC)

{

return self::sortByMultiCols($array, array($keyname => $dir));

}

/**

* 將一個二維數組按照多個列進行排序,類似 SQL 語句中的 ORDER BY

*

* 用法:

* @code php

* $rows = ArrayHelper::sortByMultiCols($rows, array(

* 'parent' => SORT_ASC,

* 'name' => SORT_DESC,

* ));

* @endcode

*

* @param array $rowset 要排序的數組

* @param array $args 排序的鍵

*

* @return array 排序后的數組

*/

static function sortByMultiCols($rowset, $args)

{

$sortArray = array();

$sortRule = '';

foreach ($args as $sortField => $sortDir)

{

foreach ($rowset as $offset => $row)

{

$sortArray[$sortField][$offset] = $row[$sortField];

}

$sortRule .= '$sortArray[/'' . $sortField . '/'], ' . $sortDir . ', ';

}

if (empty($sortArray) || empty($sortRule)) {

return $rowset;

}

eval('array_multisort(' . $sortRule . '$rowset);');

return $rowset;

}

}

希望本文所述對大家的php程序設計有所幫助。
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色偷偷av一区二区三区乱| 久久影院免费观看| 亚洲专区中文字幕| 中文字幕精品在线| 欧美福利小视频| 亚洲欧美激情在线视频| 国产精品电影久久久久电影网| 久久久精品国产一区二区| 亚洲精品之草原avav久久| 性色av香蕉一区二区| 91久久在线观看| 日本午夜人人精品| 欧美视频国产精品| 中文日韩在线观看| 欧美巨乳在线观看| 成人女保姆的销魂服务| 国产日韩av高清| 亚洲最大福利网站| 91在线免费看网站| 亚洲高清色综合| 欧洲日本亚洲国产区| 精品一区电影国产| 久久av红桃一区二区小说| 欧美成人精品三级在线观看| 亚洲精品第一国产综合精品| 欧美成人一区在线| 国产成人精品国内自产拍免费看| 久久综合国产精品台湾中文娱乐网| 国产精品免费看久久久香蕉| 国产精品96久久久久久又黄又硬| 91网站免费观看| 欧美一区二区三区免费视| 91成人在线观看国产| 欧美高跟鞋交xxxxxhd| 久久久久久久久久久网站| 欧美国产高跟鞋裸体秀xxxhd| 亚洲福利在线播放| 欧美激情videos| 国产精品久久av| 亚洲精品v欧美精品v日韩精品| 成人欧美一区二区三区黑人孕妇| 欧美国产在线视频| 成人美女免费网站视频| 色av中文字幕一区| 欧美一级高清免费播放| 国产成人涩涩涩视频在线观看| 国产精品福利网| 国产一区二区三区在线观看网站| 精品高清美女精品国产区| 91精品国产色综合| 中文字幕少妇一区二区三区| 亚洲精品在线不卡| 欧美黑人xxx| 日韩在线观看视频免费| 另类图片亚洲另类| 国产精品午夜一区二区欲梦| 91九色国产在线| 国产精品久久久久国产a级| 欧美精品午夜视频| 日本韩国在线不卡| 国产精彩精品视频| 久久国产精品亚洲| 欧美一区在线直播| 国产精品久久久久77777| 日韩中文字幕免费| 97精品国产97久久久久久免费| 欧美色另类天堂2015| 国产欧美一区二区三区四区| 久久99青青精品免费观看| 伊人激情综合网| 亚洲第一综合天堂另类专| 在线免费观看羞羞视频一区二区| 亚洲人成亚洲人成在线观看| 一区二区三区视频免费在线观看| 色悠久久久久综合先锋影音下载| 国产精品成熟老女人| 亚洲午夜av电影| 亚洲va欧美va国产综合剧情| 国产精品久久一| 久久精品国产v日韩v亚洲| 日韩**中文字幕毛片| 午夜精品久久久久久久白皮肤| 午夜精品久久久久久久男人的天堂| 国产欧美一区二区三区在线看| 国产精品久久久久久久久久新婚| 国产91精品久久久久久| 69精品小视频| 欧美日韩一区二区三区在线免费观看| 欧美日本高清一区| 亚洲精品综合精品自拍| 久久好看免费视频| 久久国产精品亚洲| 国产精品久久久久久久app| 欧美一性一乱一交一视频| 8x海外华人永久免费日韩内陆视频| 久久综合网hezyo| 在线观看不卡av| 精品日韩美女的视频高清| 欧美精品一区二区免费| 91产国在线观看动作片喷水| 精品福利在线看| 亚洲精品小视频在线观看| 亚洲第一页中文字幕| 亚洲美女自拍视频| 国产日韩欧美日韩| 日韩欧美国产免费播放| 久久免费福利视频| 欧美一区三区三区高中清蜜桃| 国产mv久久久| 久久av资源网站| 精品国产一区二区三区久久久狼| 亚洲综合大片69999| 国产91色在线播放| 欧美午夜女人视频在线| 亚洲摸下面视频| 日韩美女视频中文字幕| 精品亚洲夜色av98在线观看| 日本成人在线视频网址| 亚洲人午夜精品免费| 精品动漫一区二区| 91精品国产自产在线老师啪| 久久久久久久一| 91高潮在线观看| 在线亚洲午夜片av大片| 国产精品wwwwww| 亚洲黄色片网站| 国产99久久精品一区二区| 国产日产欧美a一级在线| 国产精品扒开腿做| 亚洲国产精品久久久| 国产91精品久久久| 亚洲精品www| 国产精品久久久久秋霞鲁丝| 欧美黑人巨大精品一区二区| 亚洲毛片一区二区| 日韩免费看的电影电视剧大全| 亚洲自拍偷拍色图| 欧美在线观看视频| 欧美国产亚洲精品久久久8v| 欧美一级大片在线免费观看| 91麻豆桃色免费看| 91wwwcom在线观看| 97视频在线观看播放| 日韩中文字幕免费看| 91精品久久久久| 欧美精品www| 色樱桃影院亚洲精品影院| 九九热这里只有精品免费看| 亚洲va欧美va国产综合剧情| 正在播放欧美视频| 国产一区二区日韩精品欧美精品| 久久精品精品电影网| 亚洲国产精品女人久久久| 自拍偷拍亚洲区| 亚洲国产一区二区三区四区| 日韩av在线精品| 欧美极度另类性三渗透| 精品久久久久久久久久久久久| 亚洲精品视频在线播放| 中国china体内裑精亚洲片| 最近2019年中文视频免费在线观看| 91在线精品播放| 国产成人精品a视频一区www| 日韩有码片在线观看|