Array.php

浏览该文件的文档。
00001 <?php
00003 // FleaPHP Framework
00004 //
00005 // Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
00006 //
00007 // 许可协议,请查看源代码中附带的 LICENSE.txt 文件,
00008 // 或者访问 http://www.fleaphp.org/ 获得详细信息。
00010 
00026 function array_remove_empty(& $arr, $trim = true)
00027 {
00028     foreach ($arr as $key => $value) {
00029         if (is_array($value)) {
00030             array_remove_empty($arr[$key]);
00031         } else {
00032             $value = trim($value);
00033             if ($value == '') {
00034                 unset($arr[$key]);
00035             } elseif ($trim) {
00036                 $arr[$key] = $value;
00037             }
00038         }
00039     }
00040 }
00041 
00050 function array_col_values(& $arr, $col)
00051 {
00052     $ret = array();
00053     foreach ($arr as $row) {
00054         if (isset($row[$col])) { $ret[] = $row[$col]; }
00055     }
00056     return $ret;
00057 }
00058 
00070 function array_to_hashmap(& $arr, $keyField, $valueField = null)
00071 {
00072     $ret = array();
00073     if ($valueField) {
00074         foreach ($arr as $row) {
00075             $ret[$row[$keyField]] = $row[$valueField];
00076         }
00077     } else {
00078         foreach ($arr as $row) {
00079             $ret[$row[$keyField]] = $row;
00080         }
00081     }
00082     return $ret;
00083 }
00084 
00093 function array_group_by(& $arr, $keyField)
00094 {
00095     $ret = array();
00096     foreach ($arr as $row) {
00097         $key = $row[$keyField];
00098         $ret[$key][] = $row;
00099     }
00100     return $ret;
00101 }
00102 
00117 function array_to_tree($arr, $fid, $fparent = 'parent_id',
00118     $fchildrens = 'childrens', $returnReferences = false)
00119 {
00120     $pkvRefs = array();
00121     foreach ($arr as $offset => $row) {
00122         $pkvRefs[$row[$fid]] =& $arr[$offset];
00123     }
00124 
00125     $tree = array();
00126     foreach ($arr as $offset => $row) {
00127         $parentId = $row[$fparent];
00128         if ($parentId) {
00129             if (!isset($pkvRefs[$parentId])) { continue; }
00130             $parent =& $pkvRefs[$parentId];
00131             $parent[$fchildrens][] =& $arr[$offset];
00132         } else {
00133             $tree[] =& $arr[$offset];
00134         }
00135     }
00136     if ($returnReferences) {
00137         return array('tree' => $tree, 'refs' => $pkvRefs);
00138     } else {
00139         return $tree;
00140     }
00141 }
00142 
00151 function tree_to_array(& $node, $fchildrens = 'childrens')
00152 {
00153     $ret = array();
00154     if (isset($node[$fchildrens]) && is_array($node[$fchildrens])) {
00155         foreach ($node[$fchildrens] as $child) {
00156             $ret = array_merge($ret, tree_to_array($child, $fchildrens));
00157         }
00158         unset($node[$fchildrens]);
00159         $ret[] = $node;
00160     } else {
00161         $ret[] = $node;
00162     }
00163     return $ret;
00164 }
00165 
00175 function array_column_sort($array, $keyname, $sortDirection = SORT_ASC)
00176 {
00177     return array_sortby_multifields($array, array($keyname => $sortDirection));
00178 }
00179 
00186 function array_sortby_multifields($rowset, $args)
00187 {
00188     $sortArray = array();
00189     $sortRule = '';
00190     foreach ($args as $sortField => $sortDir) {
00191         foreach ($rowset as $offset => $row) {
00192             $sortArray[$sortField][$offset] = $row[$sortField];
00193         }
00194         $sortRule .= '$sortArray[\'' . $sortField . '\'], ' . $sortDir . ', ';
00195     }
00196     if (empty($sortArray) || empty($sortRule)) { return $rowset; }
00197     eval('array_multisort(' . $sortRule . '$rowset);');
00198     return $rowset;
00199 }

Generated at Sat Feb 2 15:18:50 2008 for FleaPHP by  doxygen 1.5.3