2006/02/17

learn:学习php,数据结构 (二)

tags:learn,php,数据结构,数组,对象,array,object
src:http://www.php.net/manual/zh/language.types.array.php
array:数组 可以用作 数组,列表,散列表,字典,集合,栈,队列 ... 模拟树
  array:array([key=>]value,...);//key (integer|string),value (any);
    $arr = array('foor'='bar',12=true);
    $arr[]=56 //so $arr[13]==56  ,[]表示新建或修改
    如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。如果指定的键名已经有了值,则该值会被覆盖。
    $arr=array(2='bcd','efg','hij','b'='end');//same as $arr=array(2='bcd',3='efg',4='hij','b'='end');
  unset($arr[5]);//删除数组元素,但保留数组结构,即不重建索引
  unset($arr);//删除数组
  $arr=array_values($arr);//重建数组索引
  foreach($arr as $key => $value);//历遍数组的每一个键值对
   $arr[a]==$arr['a'];  define('a'='b'); $arr[a]==$arr['b'];
  函数:
    array_change_key_case($arr,CASE_UPPER);//key to upper,or def==CASE_LOWSER,相同的key值将被最后一个覆盖
    array_multisort() http://www.php.net/manual/zh/function.array-multisort.php
      //使用小写拷贝进行按字母排序,否则大写会排在小写的上面
$array = array('Alpha', 'atomic', 'Beta' , 'bank');
$array_lowercase = array_map('strtolower', $array);
array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $array);
print_r($array);
    $pieces = explode(" " , $pizza);//分割字符串; array explode ( string separator, string string [, int limit] )
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell ) = explode(":", $data);
echo $user; // foo
echo $pass; // *
$str = 'one|two|three|four';
print_r (explode('|', $str, 2));// 正数的 limit
print_r( explode('|', $str, -1 ));// 负数的 limit
Array( [0] => one [1] => two|three|four )
Array( [0] => one [1] => two [2] => three )
   $str=implode(' ',$arr);//连接数组为一个字符串; string implode ( string glue, array pieces )
   $arr=split('[/.-]',$date)split -- 用正则表达式将字符串分割到数组中 array split ( string pattern, string string [, int limit] )
    spliti --  用正则表达式不区分大小写将字符串分割到数组中
    preg_split -- 用正则表达式分割字符串 array preg_split ( string pattern, string subject [, int limit [, int flags]] )
// 分隔符可以是斜线,点,或横线
$date = "04/30/1973";
list($month, $day, $year) = split ('[/.-]', $date);
提示: preg_split() 函数使用了 Perl 兼容正则表达式语法,通常是比 split() 更快的替代方案。如果不需要正则表达式的威力,则使用 explode() 更快,这样就不会招致正则表达式引擎的浪费。

object 对象 $obj=new simpleclass(); $obj->simplemethod();
   
如果将一个对象转换成对象,它将不会有任何变化。如果其它任何类型的值被转换成对象,内置类 stdClass 的一个实例将被建立。如果该值为 NULL,则新的实例为空。对于任何其它的值,名为 scalar 的成员变量将包含该值。
<?php
$obj = (object) 'ciao';
echo $obj->scalar// outputs 'ciao'
?>

// This will create an object from an array

$monkey_array = array('title'=>'Spider Monkey' , 'src'=>'monkey.jpg');
$monkey_object = (object) $monkey_array;
print $monkey_object->title . ' ' . $monkey_object->src;

//To sort an array,
function
sort_by_field($obj_array, $field)

{
   return usort($obj_array,
         create_function('$o1,$o2',
             "return (\$o1->$field < \$o2->$field) ? -1 : 1"));
}

//To sort an array, that contains an object, after one fieldname inside the object, im using this function:
function objectSort($objectarray, $field)
{
   for ($a=0;$a < (count($objectarray)); $a++)
   {
       for ($b=0;$b < (count($objectarray)); $b++)
       { 
           if ($objectarray[$a]->$field < $objectarray[$b]->$field)
           {
               $temp = $objectarray[$a];
               $objectarray[$a] = $objectarray[$b];
               $objectarray[$b] = $temp;
           }

      }
   }
   return $objectarray;
}


输出错误提示:error_reporting([int level]);

  E_ERROR=1,E_WARNING=2,E_PARSE=4,E_NOTICE=8,E_CORE_ERROR=16,E_CORE_WARNING=32,
  E_COMPILE_ERROR=64,E_COMPILE_WARNING=128,E_USER_ERROR=256,E_USER_WARNING=512,
  E_USER_NOTICE=1024,E_ALL=2047,E_STRICT=2048
  "OFF=0"
  error_reporting(0);//turn off
  error_reporting(E_ERROR|E_WARNING|E_PARSE);//report simple runing errors
  error_reporting(E_ALL^E_NOTICE);//report all errors except E_NOTICE
  int_set('error_reporting',E_ALL);//same as error_reporting(E_ALL);


--
[:p] --fallseir.lee

没有评论: